updatePolicy

Prev Next

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

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

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

정책 ID로 지정한 기존 정책의 전체 정의를 교체합니다. 수정 가능한 모든 필드를 입력해야 하며, 전송하지 않은 설명은 비워집니다. 정책 이름은 변경할 수 없으며, 요청 본문에 포함해도 무시됩니다. 태그는 이 요청으로 변경되지 않으며 태그 추가·삭제 API를 사용합니다. 같은 자원에 대한 수정 요청이 동시에 발생하면 마지막 요청이 적용됩니다.

요청

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

메서드 URI
PUT /policies/{policyId}

요청 헤더

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

요청 경로 파라미터

요청 경로 파라미터에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
policyId String (uuid) Required 대상 정책의 식별자
  • <예시> 4e066e50-9c3a-11e7-8a66-1e5021fa7c80

요청 바디

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

필드 타입 필수 여부 설명
description String Optional 수정할 정책의 설명. 전송하지 않으면 기존 설명이 비워짐
  • 길이: ~ 300
  • <예시> 정책 설명입니다
permissions List<PolicyPermissionParam> Required 정책에 새로 설정할 권한 목록. 기존 권한 목록을 전체 교체

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 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) - 정책의 식별자
  • <예시> 4e066e50-9c3a-11e7-8a66-1e5021fa7c80
policyName String - 정책의 이름
  • <예시> my-policy
policyType String - 정책 유형
  • SYSTEM_MANAGED | USER_CREATED
    • SYSTEM_MANAGED: 네이버 클라우드 플랫폼이 제공하는 관리형 정책
    • USER_CREATED: 사용자가 생성한 정책
  • <예시> USER_CREATED
description String - 정책에 대한 설명
  • <예시> 정책 설명입니다
nrn String - 정책의 NRN(Ncloud Resource Name)
  • <예시> nrn:GOV:IAM::25000000:Policy/4e066e50-9c3a-11e7-8a66-1e5021fa7c80
createdDateTime String (date-time) - 정책이 생성된 일시
  • <예시> 2019-08-10T13:21:00Z
updatedDateTime String (date-time) - 정책이 마지막으로 수정된 일시
  • <예시> 2019-08-10T13:21:00Z
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만 표시
  • 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 - - 수정된 정책을 반환. 검증 경고가 있을 때만 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": "유효하지 않은 액션입니다"
      }
    ]
  }
}