validatePolicy

Prev Next

이 가이드는 API 명세를 기반으로 자동 생성했습니다.

Classic/VPC 환경에서 이용 가능합니다.

Ncloud API 표준 규격을 적용한 API입니다.

정책 정의와 이름을 저장하지 않고 검증하며, 발견된 오류나 경고를 반환합니다.

요청

요청 형식을 설명합니다. 요청 형식은 다음과 같습니다.

메서드 URI
POST /policies/validate

요청 헤더

Sub Account API에서 공통으로 사용하는 헤더에 대한 정보는 Sub Account 요청 헤더를 참조해 주십시오.

요청 바디

요청 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
policyName String Required 생성할 정책의 이름
  • 길이: 3 ~ 30
  • <예시> my-policy
description String Optional 정책에 대한 설명
  • 길이: ~ 300
  • <예시> 정책 설명입니다
permissions List<PolicyPermissionParam> Required 정책이 부여하는 권한 목록. 각 항목은 효과(effect), 대상(상품·액션·리소스), 적용 조건으로 구성
tags Map<String> Optional 리소스에 부여할 태그의 키-값 맵
  • <예시> {"env": "dev", "team": "a"}
tags.<키> String - 태그의 값
  • 길이: 1 ~ 256

PolicyPermissionParam

정책에 포함되는 권한(효과, 대상, 조건)

필드 타입 필수 여부 설명
effect String Required 권한 효과. 값은 IAM 정책 문서 문법(Effect)의 값을 그대로 사용
  • Allow | Deny
    • Allow: targets에 지정한 대상에 대한 액션을 허용
    • Deny: targets에 지정한 대상에 대한 액션을 거부. 같은 요청에 Allow와 Deny가 함께 적용되면 Deny가 우선
  • <예시> Allow
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)를 참고
  • <예시> {"StringEquals": {"ncp:resourceTag/env": "beta"}, "DateGreaterThan": {"ncp:currentTime": "2026-01-01T00:00:00Z"}}
condition.<키>.<키> String | List<String> - 조건 값. 단일 문자열 또는 문자열 배열로 지정. 일시 비교 연산자의 값은 RFC 3339 형식의 일시 문자열이고, Null 연산자의 값은 문자열 true 또는 false

PolicyPermissionTargetParam

권한이 적용되는 대상(상품, 액션, 리소스)

필드 타입 필수 여부 설명
product String Required 권한 대상 상품(서비스) 코드
  • <예시> IAM
actions List<String> Required 권한 대상 액션 목록
  • <예시> ["View*", "Change*"]
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 - 정책 검증 통과 여부
  • true | false
    • true: ERROR 수준의 상세 항목이 없어 검증을 통과
    • false: ERROR 수준의 상세 항목이 있어 검증을 통과하지 못함
  • <예시> true

PolicyValidationResultDetail

정책 검증 결과 상세 항목

필드 타입 필수 여부 설명
type String - 검증 결과 상세 항목의 심각도 유형. 정책 검증 API(POST /policies/validate) 응답에는 두 유형이 모두 나타나고, 생성·수정 응답의 validationResult에는 WARNING만 표시
  • ERROR | WARNING
    • ERROR: 정책을 생성·수정할 수 없는 오류
    • WARNING: 정책은 생성·수정되지만 확인이 필요한 사항
  • <예시> ERROR
code String - 검증 결과 상세 항목을 식별하는 코드. iam.error.* 또는 iam.policy.* 형식이며, 값이 추가될 수 있으므로 알 수 없는 코드는 message로 처리 필요
  • <예시> iam.policy.invalidAction
location String - 검증 결과가 가리키는 정책 문서 내 위치
  • <예시> permissions[0].targets[0]
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
}