이 가이드는 API 명세를 기반으로 자동 생성했습니다.
Classic/VPC 환경에서 이용 가능합니다.
Ncloud API 표준 규격을 적용한 API입니다.
전달된 권한 정의와 선택적 태그로 새로운 정책을 생성하고, 생성된 정책을 반환합니다.
요청
요청 형식을 설명합니다. 요청 형식은 다음과 같습니다.
| 메서드 | URI |
|---|---|
| POST | /policies |
요청 헤더
Sub Account API에서 공통으로 사용하는 헤더에 대한 정보는 Sub Account 요청 헤더를 참조해 주십시오.
요청 바디
요청 바디에 대한 설명은 다음과 같습니다.
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
policyName |
String | Required | 생성할 정책의 이름
|
description |
String | Optional | 정책에 대한 설명
|
permissions |
List<PolicyPermissionParam> | Required | 정책이 부여하는 권한 목록. 각 항목은 효과(effect), 대상(상품·액션·리소스), 적용 조건으로 구성 |
tags |
Map<String> | Optional | 리소스에 부여할 태그의 키-값 맵
|
tags.<키> |
String | - | 태그의 값
|
PolicyPermissionParam
정책에 포함되는 권한(효과, 대상, 조건)
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
effect |
String | Required | 권한 효과. 값은 IAM 정책 문서 문법(Effect)의 값을 그대로 사용
|
targets |
List<PolicyPermissionTargetParam> | Required | 권한이 적용되는 대상(상품, 액션, 리소스) 목록 |
condition |
Map<Map<String | List<String>>> | Optional | 권한 적용 조건. 조건 연산자를 키로 하고 그 아래에 조건 키와 조건 값을 두는 중첩 맵으로 지정. 연산자는 문자열 비교와 일시 비교, Null, 그리고 각 연산자에 IfExists를 붙인 변형을 지원하며, 지원하지 않는 연산자를 지정하면 400(iam.policy.invalidConditionSyntax)으로 응답. 조건 키는 요청 주체를 식별하는 ncp: 접두의 전역 속성과 태그 키를 뒤에 붙여 쓰는 형식(예: ncp:resourceTag/{tagKey})을 사용. 지원 연산자와 조건 키의 전체 목록은 정책 조건 가이드(https://guide-gov.ncloud-docs.com/docs/subaccount-condition)를 참고
|
condition.<키>.<키> |
String | List<String> | - | 조건 값. 단일 문자열 또는 문자열 배열로 지정. 일시 비교 연산자의 값은 RFC 3339 형식의 일시 문자열이고, Null 연산자의 값은 문자열 true 또는 false |
PolicyPermissionTargetParam
권한이 적용되는 대상(상품, 액션, 리소스)
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
product |
String | Required | 권한 대상 상품(서비스) 코드
|
actions |
List<String> | Required | 권한 대상 액션 목록
|
resourceNrns |
List<String> | Required | 권한 대상 리소스의 NRN 목록. 리소스를 지정하지 않을 경우 * 입력
|
요청 예시
요청 예시는 다음과 같습니다.
curl --location --request POST 'https://subaccount.apigw.gov-ntruss.com/api/v2/policies' \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-iam-access-key: {Access Key}' \
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
--header 'Content-Type: application/json' \
--data '{
"policyName": "my-policy",
"permissions": [
{
"effect": "Allow",
"targets": [
{
"product": "IAM",
"actions": [
"View*",
"Change*"
],
"resourceNrns": [
"*"
]
}
]
}
]
}'
응답
응답 형식을 설명합니다.
응답 바디
응답 바디에 대한 설명은 다음과 같습니다.
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
policyId |
String (uuid) | - | 정책의 식별자
|
policyName |
String | - | 정책의 이름
|
policyType |
String | - | 정책 유형
|
description |
String | - | 정책에 대한 설명
|
nrn |
String | - | 정책의 NRN(Ncloud Resource Name)
|
createdDateTime |
String (date-time) | - | 정책이 생성된 일시
|
updatedDateTime |
String (date-time) | - | 정책이 마지막으로 수정된 일시
|
validationResult |
Object<PolicyValidationWarnings> | - | 정책 검증에서 발견된 경고 목록. 경고가 있을 때만 포함되며, 정책은 정상 생성된 상태. 검증 실패(ERROR)는 이 필드가 아니라 400 Bad Request 표준 에러의 fieldErrors로 응답 |
tags |
Map<String> | - | 요청에 지정한 태그의 키-값 맵. 태그는 Resource Manager가 소유하므로 조회 응답에는 포함되지 않으며, 생성 요청에 지정한 값을 그대로 반환
|
tags.<키> |
String | - | 태그의 값
|
PolicyValidationWarnings
정책 생성·수정 시 검증에서 발견된 경고 목록. 경고(WARNING) 항목만 담으며, 검증 실패(ERROR)는 400 Bad Request 표준 에러의 fieldErrors로 응답하므로 포함되지 않음
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
details |
List<PolicyValidationResultDetail> | - | 경고 상세 항목 목록. 각 항목의 type은 WARNING |
PolicyValidationResultDetail
정책 검증 결과 상세 항목
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
type |
String | - | 검증 결과 상세 항목의 심각도 유형. 정책 검증 API(POST /policies/validate) 응답에는 두 유형이 모두 나타나고, 생성·수정 응답의 validationResult에는 WARNING만 표시
|
code |
String | - | 검증 결과 상세 항목을 식별하는 코드. iam.error.* 또는 iam.policy.* 형식이며, 값이 추가될 수 있으므로 알 수 없는 코드는 message로 처리 필요
|
location |
String | - | 검증 결과가 가리키는 정책 문서 내 위치
|
message |
String | - | 검증 결과를 설명하는 메시지
|
응답 상태 코드
Sub Account API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 Sub Account 응답 상태 코드를 참조해 주십시오.
이 API에만 해당하는 응답 상태 코드는 다음과 같습니다.
| HTTP 상태 코드 | 코드 | 메시지 | 설명 |
|---|---|---|---|
| 201 | - | - | 생성된 정책을 반환. 검증 경고가 있을 때만 validationResult가 포함되며, 요청에 태그를 지정한 경우 tags가 함께 반환 |
| 400 | BadRequest | The request is malformed or contains an error such as an invalid parameter value or a missing required parameter. | 필수 필드 누락·형식 오류 등 입력값 검증에 실패했거나, 정책 문서 검증(존재하지 않는 상품·액션·리소스, 구문 오류, 이름 규칙 위반)에 실패. 정책 문서 검증 실패는 실패한 필드를 fieldErrors에 전량 담아 응답 |
| 403 | Forbidden | You do not have sufficient permissions to perform this action. | 요청한 자원(또는 상위 자원)에 대한 접근 권한 없음. 자원의 존재 여부와 무관하게 우선 반환 |
| 409 | AlreadyExists | A resource with the requested identifier already exists. | 이미 같은 이름의 정책이 존재 |
응답 예시
응답 예시는 다음과 같습니다.
{
"policyId": "4e066e50-9c3a-11e7-8a66-1e5021fa7c80",
"policyName": "my-policy",
"policyType": "USER_CREATED",
"description": "정책 설명입니다",
"nrn": "nrn:GOV:IAM::25000000:Policy/4e066e50-9c3a-11e7-8a66-1e5021fa7c80",
"createdDateTime": "2019-08-10T13:21:00Z",
"updatedDateTime": "2019-08-10T13:21:00Z",
"validationResult": {
"details": [
{
"type": "ERROR",
"code": "iam.policy.invalidAction",
"location": "permissions[0].targets[0]",
"message": "유효하지 않은 액션입니다"
}
]
},
"tags": {
"env": "dev",
"team": "a"
}
}