Ncloud(네이버 클라우드) Sub Account(서브 계정)를 이용해 API Key에 대한 접근 제한을 설정하는 방법입니다.

개요

Ncloud(네이버 클라우드)를 이용하다보면 여러 가지 정보를 조회하거나 서버를 생성하는 등의 작업을 위해 API를 활용하게 되는 경우가 많습니다. 그런데 이때 사용하는 API Key를 접근 제한 없이 사용하게 되면 외부에 유출되거나 했을 때 심각한 보안 문제를 일으키게 되므로 사전에 API Key에 대한 권한을 설정하거나 접근 제한을 설정해서 사용하는 것이 권장됩니다.

여기서는 API Key를 최소 권한으로 생성하고, 접근 경로를 제한 하는 등의 방법들을 정리해보겠습니다.

서브 계정 생성

API Key 보안과 관련해서 가장 중요한 원칙은 메인 계정이 아닌 최소 권한을 가진 서브 계정(Sub Account)에서 API Key를 생성하는 것입니다.

서브 계정(Sub Account)을 생성하는 방법은 아래 문서를 참고하시기 바랍니다.

Ncloud 서브 계정 (Sub Account) 생성 가이드


  • 테스트를 위해 아래와 같이 서브 계정을 준비하고, 계정을 클릭해서 서브 계정 세부 정보 화면으로 이동합니다.
Ncloud (네이버 클라우드) Sub Account (서브 계정) 생성 가이드

계정 권한 설정

서브 계정의 권한은 최소로 설정해야 합니다.
예를 들어 Object Storage만 접근하는지, VPC Server 관련된 기능만 사용할 것인지, VPC Server 관련된 기능 중에서도 조회 기능만 사용할 것인지, Server 생성 등을 포함한 모든 기능을 사용할 것인지 등의 사용에 필요한 권한을 모두 정리해서 최소한의 권한으로 설정하는 것이 안전합니다.

우선, 서브 계정 세부 정보 화면에서 아래쪽에 있는 [정책] 탭에 있는 [개별 권한 추가] 버튼을 클릭합니다.

Ncloud (네이버 클라우드) Sub Account (서브 계정) 생성 가이드

정책 추가 화면에서는 네이버 클라우드에서 기본으로 제공하는 [관리형 정책]과 사용자가 직접 정의하는 [사용자 정의 정책]이 있습니다.
우선 [관리형 정책]에서 필요한 정책을 선택하고 [추가] 버튼을 클릭합니다.

Ncloud (네이버 클라우드) Sub Account (서브 계정) 생성 가이드
  • 정책이 워낙 많기 때문에 가능하면 위쪽의 검색 기능을 이용해서 정책을 찾는 것을 추천합니다.
    여기서는 테스트를 위해 Function으로 검색해서 [NCP_VPC_CLOUD_FUNCTIONS_MANAGER (VPC 기반 Cloud Functions 서비스 내 모든 기능을 이용할 수 있는 권한)]을 선택했습니다.
Ncloud(네이버 클라우드) Sub Account(서브 계정)를 이용해 API Key 접근 제한 설정하는 방법
Ncloud(네이버 클라우드) Sub Account(서브 계정)를 이용해 API Key 접근 제한 설정하는 방법

API Gateway 접근 권한 설정

우선, [서브 계정 세부 정보] 화면에서 [수정] 메뉴 버튼을 클릭합니다.

Ncloud(네이버 클라우드) Sub Account(서브 계정)를 이용해 API Key 접근 제한 설정하는 방법
  • [서브 계정 정보] 수정 화면에서 [접근 권한]에 있는 [API Gateway 접근]을 체크합니다. 그리고, 되도록이면 [지정된 Source에서만 접근 가능] 옵션을 선택하고, 지정된 IP 등을 추가하는 것을 권장합니다.
Ncloud (네이버 클라우드) Sub Account (서브 계정) 생성 가이드
  • 위 화면에서 [추가] 버튼을 클릭하면 아래와 같이 [접근 가능 Source 지정] 팝업이 나타나는데, IP를 입력하거나 VPC Server를 선택하면 됩니다.
Ncloud (네이버 클라우드) Sub Account (서브 계정) 생성 가이드
⁃ [VPC Server]의 경우 IP 주소로는 접근할 수 없습니다.
⁃ 아래 화면처럼 VPC Server 리스트에서 직접 선택해야 접근 가능합니다.
⁃ 그러므로 다른 계정의 VPC Server는 접근 가능 리소스에 추가할 수 없습니다.
Ncloud(네이버 클라우드) Sub Account(서브 계정)를 이용해 API Key 접근 제한 설정하는 방법

API Access Key 추가

위에서 [API Gateway 접근] 권한을 추가하면 계정 정보 화면에 아래와 같이 [Access Key] 탭이 나타나고 [추가] 버튼을 클릭하면 [Access Key]와 [Secret Key]를 생성할 수 있습니다.

Ncloud (네이버 클라우드) Sub Account (서브 계정) 생성 가이드

접근 제한 테스트

그러면 위에서 설정했던 접근 제한 설정이 제대로 작동하는지 테스트 해보겠습니다.

IP 제한

위에서 설정한 [접근 가능 Source 지정] 항목에 IP를 설정하지 않거나, 지정되지 않은 IP에서 접근할 경우 아래의 예시와 같은 오류 메시지가 반환됩니다.

  • 호출 API: getProductList
<Message>
  <error>
      <errorCode>230</errorCode>
      <message>Forbidden</message>
      <details>IP not allowed for authentication.</details>
  </error>
</Message>

계정 권한 제한

계정에 올바른 권한이 설정되지 않았을 경우 아래와 같은 오류 메시지가 반환됩니다.

  • 호출 API: createServerInstances
<responseError>
  <returnCode>802</returnCode>
  <returnMessage>You do not have authority about action : [VPCServer:Change/createServerInstance].</returnMessage>
</responseError>
  • 호출 API: getDemandCostList
<responseError>
  <returnCode>2210</returnCode>
  <returnMessage>You do not have authority about action : [NCP_FINANCE_MANAGER].</returnMessage>
</responseError>

주요 API 최소 권한

API 설명 Classic/VPC 최소 권한
getProductList Ncloud 상품 리스트 조회 공통 없음
getDemandCostList 청구 비용 리스트 조회 공통 NCP_FINANCE_MANAGER
getServerInstanceList 서버 인스턴스(VM) 리스트 조회 VPC NCP_VPC_SERVER_VIEWER
Classic NCP_SERVER_OBSERVER
createServerInstances 서버 인스턴스(VM) 생성 VPC NCP_VPC_SERVER_MANAGER
Classic NCP_SERVER_MANAGER
Get Action List CloudFunction 액션 리스트 조회 VPC NCP_VPC_CLOUD_FUNCTIONS_VIEWER
Classic NCP_CLOUD_FUNCTIONS_MANAGER
Post Action CloudFunction 액션 실행 VPC NCP_VPC_CLOUD_FUNCTIONS_MANAGER
Classic NCP_CLOUD_FUNCTIONS_MANAGER
ListBuckets ObjectStorage 버킷 리스트 조회 공통 NCP_OBJECT_STORAGE_VIEWER
createAutoScalingGroup Auto Scaling Group 생성 VPC NCP_VPC_AUTOSCALING_MANAGER
SMS API Simple & Easy Notification Service 내
SMS 발신번호 등록 기능을 제외한
모든 기능
공통 NCP_SENS_MANAGER
geoLocation 지정한 IP의 위치 정보 조회 공통 NCP_GEOLOCATION_MANAGER

참고 URL

  1. Ncloud Sub Account 사용 가이드
  2. Ncloud API 사용 가이드

문서 업데이트 내역

날짜 내용
2023-08-14 문서 최초 생성
2023-12-19 VPC Server 접근 리소스 지정 설명 추가, 스샷 업데이트