

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 선언적 정책 구문 및 예시
<a name="orgs_manage_policies_declarative_syntax"></a>

이 페이지에서는 선언적 정책 구문에 대해 설명하고 예제를 제공합니다.

## 고려 사항
<a name="declarative-policy-syntax-considerations"></a>
+ 선언적 정책을 사용하여 서비스 속성을 구성하면 여러 API에 영향을 미칠 수 있습니다. 규정을 준수하지 않는 작업은 모두 실패합니다.
+ 계정 관리자는 개별 계정 수준에서 서비스 속성의 값을 수정할 수 없습니다.

## 선언적 정책의 구문
<a name="declarative-policy-syntax-reference"></a>

선언적 정책은 [JSON](http://json.org) 규칙에 따라 구성된 일반 텍스트 파일입니다. 선언적 정책 구문은 모든 관리 정책 유형에 대한 구문을 따릅니다. 해당 구문에 대한 자세한 내용은 [관리 정책 유형에 대한 정책 구문 및 상속](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_inheritance_mgmt.html)을 참조하세요. 이 항목에서는 선언적 정책 유형의 특정 요구 사항에 해당 일반 구문을 적용하는 방법을 중점적으로 설명합니다.

다음 예제에서는 선언적 정책의 기본 구문을 보여줍니다.

```
{
  "ec2_attributes": {
    "exception_message": {
      "@@assign": "Your custom error message.https://myURL"
    }
  }
}
```
+ `ec2_attributes` 필드 키 이름입니다. 선언적 정책은 항상 지정된의 고정 키 이름으로 시작합니다 AWS 서비스. 위의 예제 정책에서 맨 위 줄입니다. 현재 선언적 정책은 Amazon EC2 관련 서비스만 지원합니다.
+ `ec2_attributes`에서 `exception_message`를 사용하여 사용자 지정 오류 메시지를 설정할 수 있습니다. 자세한 내용은 [선언적 정책에 대한 사용자 지정 오류 메시지](orgs_manage_policies_declarative.md#orgs_manage_policies_declarative-custom-message)를 참조하세요.
+ `ec2_attributes`에서 지원되는 선언적 정책을 하나 이상 삽입할 수 있습니다. 이러한 스키마는 [지원되는 선언적 정책](#declarative-policy-examples) 섹션을 참조하세요.

## 지원되는 선언적 정책
<a name="declarative-policy-examples"></a>

선언적 정책이 지원하는 AWS 서비스 및 속성은 다음과 같습니다. 다음 예제 중 일부에서는 공간을 절약하기 위해 JSON 공백 서식이 압축되었을 수 있습니다.
+ VPC 퍼블릭 액세스 차단
+ 직렬 콘솔 액세스
+ 이미지 퍼블릭 액세스 차단
+ 허용된 이미지 설정
+ 인스턴스 메타데이터
+ 스냅샷 퍼블릭 액세스 차단

------
#### [ VPC Block Public Access ]

**정책 효과**

Amazon VPC 및 서브넷 내 리소스가 인터넷 게이트웨이(IGW)를 통해 인터넷에 접근할 수 있는지 제어합니다. 자세한 내용은 *Amazon Virtual Private Cloud 사용 설명서*의 [인터넷 액세스 구성](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-igw-internet-access.html)을 참조하세요.

**정책 내용**

```
{
  "ec2_attributes": {
    "vpc_block_public_access": {
      "internet_gateway_block": {
        "mode": {
          "@@assign": "block_ingress"
        },
        "exclusions_allowed": {
          "@@assign": "enabled"
        }
      }
    }
  }
}
```

다음은 이 속성에 사용할 수 있는 필드입니다.
+ `"internet_gateway"`:
  + `"mode"`:
    + `"off"`: VPC BPA가 활성화되지 않았습니다.
    + `"block_ingress"`: VPC에 대한 모든 인터넷 트래픽(제외된 VPC 또는 서브넷 제외)이 차단되었습니다. NAT 게이트웨이 및 송신 전용 인터넷 게이트웨이를 오가는 트래픽만 허용되는데, 이러한 게이트웨이는 아웃바운드 연결만 설정되도록 허용하기 때문입니다.
    + `"block_bidirectional"`: 인터넷 게이트웨이 및 송신 전용 인터넷 게이트웨이(제외된 VPC 및 서브넷 제외)를 오가는 모든 트래픽이 차단되었습니다.
+ `"exclusions_allowed"`: 제외 항목은 계정의 VPC BPA 모드에서는 제외하고 양방향 또는 송신 전용 액세스를 허용하는 단일 VPC 또는 서브넷에 적용할 수 있는 모드입니다.
  + `"enabled"`: 계정에서 제외를 생성할 수 있습니다.
  + `"disabled"`: 계정에서 제외를 생성할 수 없습니다.
**참고**  
속성을 사용하여 제외가 허용되는지 여부를 구성할 수 있지만 이 속성 자체로는 제외를 생성할 수 없습니다. 제외를 생성하려면 VPC를 소유한 계정에서 해당 제외를 생성해야 합니다. VPC BPA 제외 생성에 대한 자세한 내용은 *Amazon VPC 사용 설명서*의 [제외 생성 및 삭제](https://docs.aws.amazon.com//vpc/latest/userguide/security-vpc-bpa.html#security-vpc-bpa-exclusions) 섹션을 참조하세요.

**고려 사항**

선언적 정책에서 이 속성을 사용하는 경우 다음 작업을 사용하여 범위 내 계정에 적용되는 구성을 수정할 수 없습니다. 단, 이 목록이 전부는 아닙니다.
+ `ModifyVpcBlockPublicAccessOptions`
+ `CreateVpcBlockPublicAccessExclusion`
+ `ModifyVpcBlockPublicAccessExclusion`

------
#### [ Serial Console Access ]

**정책 효과**

EC2 직렬 콘솔에 액세스할 수 있는지 여부를 제어합니다. EC2 직렬 콘솔에 대한 자세한 내용은 *Amazon Elastic Compute Cloud 사용 설명서*의 [EC2 직렬 콘솔](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-serial-console.html)을 참조하세요.

**정책 내용**

```
{
  "ec2_attributes": {
    "serial_console_access": {
      "status": {
        "@@assign": "enabled"
      }
    }
  }
}
```

다음은 이 속성에 사용할 수 있는 필드입니다.
+ `"status"`:
  + `"enabled"`: EC2 직렬 콘솔 액세스가 허용됩니다.
  + `"disabled"`: EC2 직렬 콘솔 액세스가 차단됩니다.

**고려 사항**

선언적 정책에서 이 속성을 사용하는 경우 다음 작업을 사용하여 범위 내 계정에 적용되는 구성을 수정할 수 없습니다. 단, 이 목록이 전부는 아닙니다.
+ `EnableSerialConsoleAccess`
+ `DisableSerialConsoleAccess`

------
#### [ Image Block Public Access ]

**정책 효과**

Amazon Machine Images(AMI)를 공개적으로 공유 가능한지 여부를 제어합니다. AMI에 대한 자세한 정보는 *Amazon Elastic Compute Cloud 사용 설명서*의 [Amazon Machine Image(AMI)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) 섹션을 참조하세요.

**정책 내용**

```
{
  "ec2_attributes": {
    "image_block_public_access": {
      "state": {
        "@@assign": "block_new_sharing"
      }
    }
  }
}
```

다음은 이 속성에 사용할 수 있는 필드입니다.
+ `"state"`:
  + `"unblocked"`: AMI의 퍼블릭 공유에는 제한이 없습니다.
  + `"block_new_sharing"`: AMI의 새 퍼블릭 공유를 차단합니다. 그러나 이미 공개적으로 공유된 AMI는 계속 공개적으로 사용할 수 있습니다.

**고려 사항**

선언적 정책에서 이 속성을 사용하는 경우 다음 작업을 사용하여 범위 내 계정에 적용되는 구성을 수정할 수 없습니다. 단, 이 목록이 전부는 아닙니다.
+ `EnableImageBlockPublicAccess`
+ `DisableImageBlockPublicAccess`

------
#### [ Allowed Images Settings ]

**정책 효과**

허용된 AMI를 통해 Amazon EC2에서 Amazon Machine Image(AMI)의 검색 및 사용을 제어합니다. AMI에 대한 자세한 내용은 *Amazon Elastic Compute Cloud 사용 설명서*의 [허용된 AMI를 사용하여 Amazon EC2에서 AMI 검색 및 사용 제어](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-allowed-amis.html)를 참조하세요.

**정책 내용**

다음은 이 속성에 사용할 수 있는 필드입니다.

```
{
  "ec2_attributes": {
    "allowed_images_settings": {
      "state": {
        "@@assign": "enabled"
      },
      "image_criteria": {
        "criteria_1": {
          "allowed_image_providers": {
            "@@append": [
              "amazon"
            ]
          }
        }
      }
    }
  }
}
```
+ `"state"`:
  + `"enabled"`: 속성이 활성 상태이고 적용됩니다.
  + `"disabled"`: 속성이 비활성 상태이며 적용되지 않습니다.
  + `"audit_mode"`: 속성이 감사 모드입니다. 즉, 규정을 준수하지 않는 이미지를 식별하지만 사용을 차단하지는 않습니다.
+ `"image_criteria"`: 기준 목록입니다. criteria\_1에서 criteria\_10까지의 이름으로 최대 10개의 기준 지원
  + `"allowed_image_providers"`: amazon, aws\_marketplace, aws\_backup\_vault의 12자리 계정 ID 또는 소유자 별칭으로 구성된 쉼표로 구분된 목록입니다.
  + `"image_names"`: 허용되는 이미지의 이름입니다. 이름에는 와일드카드(? 및 \*)가 포함될 수 있습니다. 길이는 1\~128자입니다. ?를 사용할 경우, 최소 3자 이상 입력해야 합니다.
  + `"marketplace_product_codes"`: 허용된 이미지에 대한 AWS Marketplace 제품 코드입니다. 길이: 1\~25자 유효한 문자: 문자(A\~Z, a\~z) 및 숫자(0\~9)
  + `"creation_date_condition"`: 허용되는 이미지의 최대 경과 기간입니다.
    + `"maximum_days_since_created"`: 이미지가 생성된 이후 경과한 최대 일수입니다. 유효 범위: 최소값은 0입니다. 최대값은 2147483647입니다.
  + `"deprecation_time_condition"`: 허용되는 이미지의 사용 중단 이후 최대 경과 기간입니다.
    + `"maximum_days_since_deprecated"`: 이미지의 사용 중단 이후 경과한 최대 일수입니다. 유효 범위: 최소값은 0입니다. 최대값은 2147483647입니다.

**고려 사항**

선언적 정책에서 이 속성을 사용하는 경우 다음 작업을 사용하여 범위 내 계정에 적용되는 구성을 수정할 수 없습니다. 단, 이 목록이 전부는 아닙니다.
+ `EnableAllowedImagesSettings`
+ `ReplaceImageCriteriaInAllowedImagesSettings`
+ `DisableAllowedImagesSettings`

------
#### [ Instance Metadata ]

**정책 효과**

모든 새 EC2 인스턴스 시작에 대한 IMDS 기본값 및 IMDSv2 적용을 제어합니다. EC2 IMDS 기본값 및 IMDSv2 적용에 대한 자세한 내용은 Amazon [ EC2 사용 설명서의 인스턴스 메타데이터를 사용하여 EC2 인스턴스 관리를 참조하세요](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html). *Amazon EC2 *

**정책 내용**

다음은 이 속성에 사용할 수 있는 필드입니다.

```
{
  "ec2_attributes": {
    "instance_metadata_defaults": {
      "http_tokens": {
        "@@assign": "required"
      },
      "http_put_response_hop_limit": {
        "@@assign": "4"
      },
      "http_endpoint": {
        "@@assign": "enabled"
      },
      "instance_metadata_tags": {
        "@@assign": "enabled"
      },
      "http_tokens_enforced": {
        "@@assign": "enabled"
      }
    }
  }
}
```
+ `"http_tokens"`:
  + `"no_preference"`: 다른 기본값이 적용됩니다. 예를 들어, 해당되는 경우 AMI가 기본값으로 설정됩니다.
  + `"required"`: IMDSv2를 사용해야 합니다. IMDSv1은 허용되지 않습니다.
  + `"optional"`: IMDSv1과 IMDSv2가 모두 허용됩니다.
**참고**  
**메타데이터 버전**  
`http_tokens`을 `required`(IMDSv2를 사용해야 함)로 설정하기 전에 IMDSv1 호출을 수행하는 인스턴스가 없는지 확인합니다. 자세한 내용은 *Amazon EC2*[2 사용 설명서의 1단계: IMDSv2=선택 사항으로 인스턴스 식별 및 IMDSv1 사용량 감사를](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-transition-to-version-2.html#path-step-1) 참조하세요.
+ `"http_put_response_hop_limit"`:
  + `"{{Integer}}"`: -1부터 64까지의 정수 값으로, 메타데이터 토큰이 이동할 수 있는 최대 홉 수를 나타냅니다. 기본 설정이 없음을 표시하려면 -1을 지정하십시오.
**참고**  
**홉 제한**  
`http_tokens`이 `required`로 설정된 경우 `http_put_response_hop_limit`를 최소 2로 설정하는 것이 좋습니다. 자세한 내용을 알아보려면 *Amazon Elastic Compute Cloud 사용 설명서*의 [인스턴스 메타데이터 액세스 고려 사항](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html#imds-considerations)을 참조하세요.
+ `"http_endpoint"`:
  + `"no_preference"`: 다른 기본값이 적용됩니다. 예를 들어, 해당되는 경우 AMI가 기본값으로 설정됩니다.
  + `"enabled"`: 인스턴스 메타데이터 서비스의 엔드포인트에 액세스할 수 있습니다.
  + `"disabled"`: 인스턴스 메타데이터 서비스의 엔드포인트에 액세스할 수 없습니다.
+ `"instance_metadata_tags"`:
  + `"no_preference"`: 다른 기본값이 적용됩니다. 예를 들어, 해당되는 경우 AMI가 기본값으로 설정됩니다.
  + `"enabled"`: 인스턴스 메타데이터에서 인스턴스 태그에 액세스할 수 있습니다.
  + `"disabled"`: 인스턴스 메타데이터에서 인스턴스 태그에 액세스할 수 없습니다.
+ `"http_tokens_enforced":`
  + `"no_preference"`: 다른 기본값이 적용됩니다. 예를 들어, 해당되는 경우 AMI가 기본값으로 설정됩니다.
  + `"enabled"`: IMDSv2를 사용해야 합니다. IMDSv1 인스턴스를 시작하거나 기존 인스턴스에서 IMDSv1을 활성화하려는 시도는 실패합니다.
  + `"disabled"`: IMDSv1과 IMDSv2가 모두 허용됩니다.
**주의**  
**IMDSv2 적용**  
IMDSv1 및 IMDSv2(토큰 선택 사항)를 허용하면서 IMDSv2 적용을 활성화하면 IMDSv1이 시작 파라미터 또는 AMI 기본값을 통해 명시적으로 비활성화되지 않는 한 시작 실패가 발생합니다. IMDSv1 자세한 내용은 *Amazon EC2 사용 설명서*의 [ IMDSv1-enabled 인스턴스 시작 실패](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/troubleshooting-launch.html#launching-an-imdsv1-enabled-instance-fails)를 참조하세요.

------
#### [ Snapshot Block Public Access ]

**정책 효과**

Amazon EBS 스냅샷에 공개적으로 액세스할 수 있는지 여부를 제어합니다. 스냅샷 아카이브에 대한 자세한 내용은 *Amazon Elastic Block Store 사용 설명서*의 [Amazon EBS 스냅샷](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-snapshots.html)을 참조하세요.

**정책 내용**

```
{
  "ec2_attributes": {
    "snapshot_block_public_access": {
      "state": {
        "@@assign": "block_new_sharing"
      }
    }
  }
}
```

다음은 이 속성에 사용할 수 있는 필드입니다.
+ `"state"`:
  + `"block_all_sharing"`: 스냅샷의 모든 퍼블릭 공유를 차단합니다. 이미 공개적으로 공유된 스냅샷은 비공개로 취급되어 더 이상 공개적으로 사용할 수 없습니다.
  + `"block_new_sharing"`: 스냅샷의 새 퍼블릭 공유를 차단합니다. 그러나 이미 공개적으로 공유된 스냅샷은 계속 공개적으로 사용할 수 있습니다.
  + `"unblocked"`: 스냅샷의 공개 공유에는 제한이 없습니다.

**고려 사항**

선언적 정책에서 이 속성을 사용하는 경우 다음 작업을 사용하여 범위 내 계정에 적용되는 구성을 수정할 수 없습니다. 단, 이 목록이 전부는 아닙니다.
+ `EnableSnapshotBlockPublicAccess`
+ `DisableSnapshotBlockPublicAccess`

------