이 가이드는 API 명세를 기반으로 자동 생성했습니다.
Classic/VPC 환경에서 이용 가능합니다.
Ncloud API 표준 규격을 적용한 API입니다.
정책 ID로 지정한 기존 정책의 전체 정의를 교체합니다. 수정 가능한 모든 필드를 입력해야 하며, 전송하지 않은 설명은 비워집니다. 정책 이름은 변경할 수 없으며, 요청 본문에 포함해도 무시됩니다. 태그는 이 요청으로 변경되지 않으며 태그 추가·삭제 API를 사용합니다. 같은 자원에 대한 수정 요청이 동시에 발생하면 마지막 요청이 적용됩니다.
요청
요청 형식을 설명합니다. 요청 형식은 다음과 같습니다.
| 메서드 | URI |
|---|---|
| PUT | /policies/{policyId} |
요청 헤더
Sub Account API에서 공통으로 사용하는 헤더에 대한 정보는 Sub Account 요청 헤더를 참조해 주십시오.
요청 경로 파라미터
요청 경로 파라미터에 대한 설명은 다음과 같습니다.
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
policyId |
String (uuid) | Required | 대상 정책의 식별자
|
요청 바디
요청 바디에 대한 설명은 다음과 같습니다.
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
description |
String | Optional | 수정할 정책의 설명. 전송하지 않으면 기존 설명이 비워짐
|
permissions |
List<PolicyPermissionParam> | Required | 정책에 새로 설정할 권한 목록. 기존 권한 목록을 전체 교체 |
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 PUT 'https://subaccount.apigw.gov-ntruss.com/api/v2/policies/4e066e50-9c3a-11e7-8a66-1e5021fa7c80' \
--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 '{
"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로 응답 |
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 상태 코드 | 코드 | 메시지 | 설명 |
|---|---|---|---|
| 200 | - | - | 수정된 정책을 반환. 검증 경고가 있을 때만 validationResult가 포함 |
| 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. | 요청한 자원(또는 상위 자원)에 대한 접근 권한 없음. 자원의 존재 여부와 무관하게 우선 반환 |
| 404 | NotFound | One or more of the resources in the request does not exist in the system. | 요청한 자원을 찾을 수 없음 |
응답 예시
응답 예시는 다음과 같습니다.
{
"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": "유효하지 않은 액션입니다"
}
]
}
}