이 가이드는 API 명세를 기반으로 자동 생성했습니다.
Classic/VPC 환경에서 이용 가능합니다.
Ncloud API 표준 규격을 적용한 API입니다.
정책 정의와 이름을 저장하지 않고 검증하며, 발견된 오류나 경고를 반환합니다.
요청
요청 형식을 설명합니다. 요청 형식은 다음과 같습니다.
| 메서드 | URI |
|---|---|
| POST | /policies/validate |
요청 헤더
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/validate' \
--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": [
"*"
]
}
]
}
]
}'
응답
응답 형식을 설명합니다.
응답 바디
응답 바디에 대한 설명은 다음과 같습니다.
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
details |
List<PolicyValidationResultDetail> | - | 정책 검증에서 생성된 상세 항목 목록 |
success |
Boolean | - | 정책 검증 통과 여부
|
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 상태 코드 | 코드 | 메시지 | 설명 |
|---|---|---|---|
| 200 | - | - | 정책 문서의 검증 결과를 반환. 검증에 실패해도 200으로 응답하며 결과는 success와 details로 전달 |
| 400 | BadRequest | The request is malformed or contains an error such as an invalid parameter value or a missing required parameter. | 유효하지 않은 요청. 필수 필드 누락, 형식 오류 등 입력값 검증 실패 |
| 403 | Forbidden | You do not have sufficient permissions to perform this action. | 요청한 자원(또는 상위 자원)에 대한 접근 권한 없음. 자원의 존재 여부와 무관하게 우선 반환 |
응답 예시
응답 예시는 다음과 같습니다.
{
"details": [
{
"type": "ERROR",
"code": "iam.policy.invalidAction",
"location": "permissions[0].targets[0]",
"message": "유효하지 않은 액션입니다"
}
],
"success": true
}