개요

Ncloud(네이버 클라우드)를 이용하다보면 여러 가지 정보를 조회하거나 서버를 생성하는 등의 작업을 위해 API를 활용하게 되는 경우가 많습니다. 이때 API를 사용하기 위해 반드시 필요한 것이 [Access Key]와 [Secret Key]등으로 구성된 [API 인증키]입니다. 여기서는 [API 인증키]를 어떻게 생성하고, 보안과 관련해서 지켜야할 원칙이나 설정은 어떤 것이 있는지 정리해보겠습니다.

계정과 권한 설정

그러면 [API 인증키]를 어떻게 생성하는지 살펴보기 전에 [API 인증키]를 생성할 계정과 권한 설정에 관해서 먼저 정리해보겠습니다.

API 인증키 생성 계정

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

용도별 서브 계정 생성

API는 여러 가지 용도로 사용하게 됩니다. 예를 들어 [서버나 DB 관리], [서비스 이용 금액 확인], [ObjectStorage 관리], [대량 메일이나 문자 발송]등의 경우에 사용하게 되는데, 이렇게 여러 가지 기능을 하나의 서브 계정에 있는 하나의 API 인증키로 사용하는 것 또한 보안적으로 좋지 않은 방법입니다.
그러므로 주요 기능들을 서비스 용도나 어디서 API를 호출하는 가에 따라 각각의 서브 계정으로 나누고 해당 계정에서 생성한 API 인증키를 구분해서 사용하는 것이 안전합니다.

예를 들어 [Cloud Outbound Mailer], [Object Storage], [Server] 관리를 위한 API를 사용한다고 가정할 때 아래와 같이 각각의 서브 계정을 만들어서 사용하는 방법을 추천합니다.

Ncloud(네이버 클라우드) API 인증키를 생성하는 방법

최소 권한 설정

위에서도 설명했듯이 서브 계정의 권한은 최소한으로 설정해야 하는데, 예를 들어 [Cloud Outbound Mailer]를 사용하기 위한 서브 계정의 권한은 아래와 같이 [개별 권한 추가]를 이용해 [NCP_CLOUD_OUTBOUND_MAILER_MANAGER] 등의 권한만 설정해야 합니다.

Ncloud(네이버 클라우드) API 인증키를 생성하는 방법

서브 계정 생성

계정과 권한에 대해 살펴봤으니, 이제 [API 인증키] 생성 과정을 살펴보겠습니다.
테스트를 위해 아래와 같이 서브 계정을 준비하고, 계정을 클릭해서 서브 계정 세부 정보 화면으로 이동합니다.
서브 계정(Sub Account)을 생성하는 방법은 아래 문서를 참고하시기 바랍니다.

Ncloud(네이버 클라우드) API 인증키를 생성하는 방법

계정 권한 설정

위에서도 설명했듯이 서브 계정의 권한은 최소로 설정해야 합니다.
우선, 서브 계정 세부 정보 화면에서 아래쪽에 있는 [정책] 탭에 있는 [개별 권한 추가] 버튼을 클릭합니다.

Ncloud(네이버 클라우드) API 인증키를 생성하는 방법
  • 정책 추가 화면에서는 네이버 클라우드에서 기본으로 제공하는 [관리형 정책]과 사용자가 직접 정의하는 [사용자 정의 정책]이 있습니다. 우선 [관리형 정책]에서 필요한 정책을 선택하고 [추가] 버튼을 클릭하면 정책을 추가할 수 있습니다.
Ncloud(네이버 클라우드) API 인증키를 생성하는 방법
  • 정책이 워낙 많기 때문에 가능하면 위쪽의 검색 기능에서 정책명이나 연관 서비스에 검색어를 입력해서 정책을 찾는 것을 추천합니다. 여기서는 테스트를 위해 Mailer로 검색해서 [NCP_CLOUD_OUTBOUND_MAILER_MANAGER (Cloud Outbound Mailer 서비스 내 모든 기능을 이용할 수 있는 권한)]을 선택했습니다.
Ncloud(네이버 클라우드) API 인증키를 생성하는 방법
  • [정책] 항목에 권한이 추가된 것을 확인할 수 있습니다.
Ncloud(네이버 클라우드) API 인증키를 생성하는 방법

API Gateway 접근 권한 설정

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

Ncloud(네이버 클라우드) API 인증키를 생성하는 방법
  • [서브 계정 수정] 화면에서 [접근 권한]에 있는 [API Gateway 접근]을 체크합니다. 그리고, 되도록이면 [지정된 Source에서만 접근 가능] 옵션을 선택하고, 지정된 IP 등을 추가하는 것을 권장합니다.
Ncloud(네이버 클라우드) API 인증키를 생성하는 방법

접근 가능 Source

위 화면에서 [추가] 버튼을 클릭하면 아래와 같이 [접근 가능 Source 지정] 팝업이 나타나는데, [IP]를 입력하거나 [VPC] 또는 [VPC Server]를 선택하면 됩니다.

⁃ 접근 가능 Source로 IP만 지정할 경우 VPC Server에서의 API Access는 허용되지 않습니다.
⁃ 접근 가능 Source로 VPC를 지정할 경우에는 하위 VPC Server에서의 API Access 접근이 허용됩니다.
⁃ Object Storage, Archive Storage는 Sub Account 서비스를 통한 API Access 접근 제어를 적용 받지 않습니다.

IP

IP 또는 IP 대역을 추가하면 됩니다.

Ncloud(네이버 클라우드) API 인증키를 생성하는 방법

VPC

지정할 VPC 그룹을 선택해서 아래쪽으로 이동 시킵니다.

Ncloud(네이버 클라우드) API 인증키를 생성하는 방법

VPC Server

지정할 VPC Server를 선택해서 아래쪽으로 이동 시킵니다.

⁃ [VPC Server]의 경우 IP 주소로는 접근할 수 없습니다.
⁃ 아래 화면처럼 VPC Server 리스트에서 직접 선택해야 접근 가능합니다.
⁃ 그러므로 다른 계정의 VPC Server는 접근 가능 리소스에 추가할 수 없습니다.
Ncloud(네이버 클라우드) API 인증키를 생성하는 방법

API Access Key 생성

위에서 [API Gateway 접근] 권한을 추가하면 계정 정보 화면에 아래와 같이 [Access Key] 탭이 나타나는데 [추가] 버튼을 클릭합니다.

Ncloud(네이버 클라우드) API 인증키를 생성하는 방법
  • [Access Key] 추가 안내 팝업 창에서 [추가] 버튼을 클릭합니다.
Ncloud(네이버 클라우드) API 인증키를 생성하는 방법
  • 모든 단계가 완료되고 [Access Key]와 [Secret Key]가 생성된 것을 확인할 수 있습니다.
Ncloud(네이버 클라우드) API 인증키를 생성하는 방법

접근 제한 테스트

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

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 설명 최소 권한
getProductList Ncloud 상품 리스트 조회 없음
getDemandCostList 청구 비용 리스트 조회 NCP_FINANCE_MANAGER
getServerInstanceList 서버 인스턴스(VM) 리스트 조회 NCP_VPC_SERVER_VIEWER
createServerInstances 서버 인스턴스(VM) 생성 NCP_VPC_SERVER_MANAGER
Get Action List CloudFunction 액션 리스트 조회 NCP_VPC_CLOUD_FUNCTIONS_VIEWER
Post Action CloudFunction 액션 실행 NCP_VPC_CLOUD_FUNCTIONS_MANAGER
ListBuckets ObjectStorage 버킷 리스트 조회 NCP_OBJECT_STORAGE_VIEWER
createAutoScalingGroup Auto Scaling Group 생성 NCP_VPC_AUTOSCALING_MANAGER
SMS API Simple & Easy Notification Service 내
SMS 발신번호 등록 기능을 제외한 모든 기능
NCP_SENS_MANAGER
createMailRequest 수신자, 발신자, 메일 내용 등을 지정하여 이메일 발송 요청 NCP_CLOUD_OUTBOUND_MAILER_MANAGER
geoLocation 지정한 IP의 위치 정보 조회 NCP_GEOLOCATION_MANAGER

참고 URL

  1. Ncloud API 가이드
    https://api.ncloud-docs.com/docs/ko/home/

문서 업데이트 내역

날짜 내용
2024-08-13 문서 최초 생성