키 정책 생성 - AWS Key Management Service

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

키 정책 생성

AWS KMS 콘솔에서 또는 , 및 와 같은 작업을 사용하여 AWS KMS API 키 정책을 생성하고 관리할 수 CreateKey ReplicateKey있습니다PutKeyPolicy.

AWS KMS 콘솔에서 KMS 키를 생성하면 콘솔 에 대한 기본 키 정책을 기반으로 키 정책을 생성하는 단계를 안내합니다. CreateKey 또는 ReplicateKey 를 사용할 때 키 정책을 지정APIs하지 않으면 프로그래밍 방식으로 생성된 키에 대한 기본 키 정책이 APIs 적용됩니다. 를 사용할 때는 키 정책을 지정PutKeyPolicyAPI해야 합니다.

각 정책 문서에는 하나 이상의 정책 문이 포함될 수 있습니다. 다음은 정책 문이 하나 포함된 유효한 키 정책 문서를 나타낸 예제입니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Describe the policy statement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeySpec": "SYMMETRIC_DEFAULT" } } } ] }

키 정책 형식

키 정책 문서는 다음 규칙을 준수해야 합니다.

  • 최대 32KB(32,768바이트)

  • 키 정책 문의 Sid 요소에는 공백이 포함될 수 있습니다. (IAM정책 문서의 Sid 요소에서는 공백이 금지됩니다.)

키 정책 문서에는 다음 문자만 포함될 수 있습니다.

  • 인쇄 가능한 ASCII 문자

  • Basic Latin 및 Latin-1 Supplement 문자 집합의 인쇄 가능한 문자

  • 탭(\u0009), 줄 바꿈(\u000A) 및 캐리지 리턴(\u000D) 특수 문자

키 정책의 요소

키 정책 문서에는 다음 요소가 있어야 합니다.

버전

키 정책 문서 버전을 지정합니다. 버전을 2012-10-17(최신 버전)로 설정합니다.

명령

Statement - 정책 문을 포함합니다. 키 정책 문서에는 하나 이상의 문이 있어야 합니다.

각 키 정책 문은 최대 6개의 요소로 구성될 수 있습니다. Effect, Principal, ActionResource 요소는 필수입니다.

Sid

(선택 사항) 문 식별자(Sid)로서 문 설명에 사용할 수 있는 임의 문자열입니다. 키 정책의 Sid에는 공백이 포함될 수 있습니다. (IAM정책 Sid 요소에 공백을 포함할 수 없습니다.)

Effect

(필수) 정책 문에서 권한을 허용할지 거부할지를 결정합니다. 유효한 값은 Allow 또는 Deny입니다. KMS 키에 대한 액세스를 명시적으로 허용하지 않으면 액세스가 암시적으로 거부됩니다. KMS 키에 대한 액세스를 명시적으로 거부할 수도 있습니다. 다른 정책에서 액세스 권한을 허용하더라도 사용자가 액세스할 수 없도록 하려고 할 때 이러한 작업을 수행할 수 있습니다.

Principal

(필수) 보안 주체는 정책 설명에 지정된 권한을 갖는 자격 증명입니다. 키 정책에서 AWS 계정, IAM 사용자, IAM 역할 및 일부 AWS 서비스를 보안 주체로 지정할 수 있습니다. IAM 사용자 그룹은 모든 정책 유형에서 유효한 보안 주체가 아닙니다.

"AWS": "*"와 같은 별표 값은 모든 계정의 모든 AWS ID를 나타냅니다.

중요

조건을 사용하여 키 정책을 제한하지 않는 한 권한을 허용하는 키 정책문에서 보안 주체를 별표(*)로 설정하지 마세요. 별표는 다른 정책 문이 명시적으로 거부하지 않는 한 KMS 키를 사용할 수 있는 모든 AWS 계정 권한을 모든 자격 증명에 부여합니다. 다른 의 사용자는 자신의 계정에 해당 권한이 있을 때마다 KMS 키를 사용할 AWS 계정 수 있습니다.

참고

IAM 모범 사례에서는 장기 보안 인증 정보가 있는 IAM 사용자를 사용하지 않는 것이 좋습니다. 가능하면 임시 자격 증명을 제공하는 IAM 역할을 사용합니다. 자세한 내용은 IAM 사용 설명서의 에서 보안 모범 사례를 IAM 참조하세요.

키 정책 문에 있는 보안 주체가 로 표현된 AWS 계정 보안 주체인 경우 정책 문arn:aws:iam::111122223333:root"은 보안 IAM 주체에게 권한을 부여하지 않습니다. 대신 정책을 AWS 계정 사용하여 키 IAM 정책에 지정된 권한을 위임할 수 있는 권한을 부여합니다. (계정 식별자에 'root'를 사용하지만 arn:aws:iam::111122223333:root" 형식의 보안 주체는 AWS 계정 루트 사용자를 나타내지 않습니다. 계정 보안 주체는 계정과 계정 루트 사용자를 포함한 해당 관리자를 나타냅니다.)

보안 주체가 다른 보안 주체 AWS 계정 이거나 보안 주체인 경우 권한은 키 및 KMS 키 정책이 있는 리전에서 계정이 활성화된 경우에만 유효합니다. 기본적으로 사용하도록 설정되지 않은 리전(‘옵트인 리전’)에 대한 자세한 내용은 AWS 일반 참조AWS 리전관리를 참조하세요.

다른 보안 주체 AWS 계정 또는 보안 주체가 KMS 키를 사용하도록 허용하려면 키 정책 및 다른 계정의 IAM 정책에 권한을 제공해야 합니다. 자세한 내용은 다른 계정의 사용자가 KMS를 사용하도록 허용 섹션을 참조하세요.

작업

(필수) 허용하거나 거부할 API 작업을 지정합니다. 예를 들어 kms:Encrypt 작업은 AWS KMS 암호화 작업에 해당합니다. 정책 설명에 두 개 이상의 작업을 나열할 수 있습니다. 자세한 내용은 권한 참조 단원을 참조하십시오.

참고

필수 Action 요소가 키 정책 문에서 누락된 경우 정책 문은 영향을 미치지 않습니다. Action 요소가 없는 키 정책 문은 KMS 키에 적용되지 않습니다.

키 정책 문에 해당 Action 요소가 없는 경우 AWS KMS 콘솔은 오류를 올바르게 보고하지만 정책 문이 효과적이지 않더라도 CreateKey 및 는 PutKeyPolicy APIs 성공합니다.

Resource

(필수) 키 정책에서 리소스 요소의 값은 이며"*", 이는 '이 KMS 키'를 의미합니다. 별표("*")는 KMS 키 정책이 연결된 키를 식별합니다.

참고

필수 Resource 요소가 키 정책 문에서 누락된 경우 정책 문은 영향을 미치지 않습니다. Resource 요소가 없는 키 정책 문은 KMS 키에 적용되지 않습니다.

키 정책 문에 해당 Resource 요소가 누락된 경우 AWS KMS 콘솔은 오류를 올바르게 보고하지만 정책 문이 효과적이지 않더라도 CreateKey 및 는 PutKeyPolicy APIs 성공합니다.

조건

(선택 사항) 키 정책이 적용되기 위해 충족해야 하는 요구 사항을 지정합니다. 조건과 함께 는 API 요청의 컨텍스트를 평가하여 정책 문이 적용되는지 여부를 결정할 AWS 수 있습니다.

조건을 지정하려면 미리 정의된 조건 키 를 사용합니다. 는 AWS 전역 조건 키AWS KMS 조건 키 를 AWS KMS 지원합니다. 속성 기반 액세스 제어(ABAC)를 지원하려면 태그 및 별칭을 기반으로 키에 대한 액세스를 제어하는 조건 KMS 키를 AWS KMS 제공합니다. 자세한 내용은 AWS KMS의 ABAC 섹션을 참조하세요.

조건의 형식:

"Condition": {"condition operator": {"condition key": "condition value"}}

즉, 다음과 같습니다.

"Condition": {"StringEquals": {"kms:CallerAccount": "111122223333"}}

AWS 정책 구문에 대한 자세한 내용은 IAM 사용 설명서AWS IAM 정책 참조를 참조하세요.

예제 키 정책

다음 예제에서는 대칭 암호화 키에 대한 전체 KMS 키 정책을 보여줍니다. 이 장의 주요 정책 개념에 대해 읽으면서 참조용으로 사용할 수 있습니다. 이 키 정책은 앞의 기본 키 정책 섹션의 예제 정책 설명을 단일 키 정책에 결합하여 다음을 달성합니다.

  • 예제 AWS 계정에서 KMS 키에 대한 111122223333전체 액세스를 허용합니다. 이를 통해 계정 루트 사용자(긴급 상황의 경우)를 포함한 계정 및 해당 관리자가 계정의 IAM 정책을 사용하여 KMS 키에 액세스할 수 있습니다.

  • ExampleAdminRole IAM 역할이 KMS 키를 관리할 수 있도록 허용합니다.

  • ExampleUserRole IAM 역할이 KMS 키를 사용하도록 허용합니다.

{ "Id": "key-consolepolicy", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM user Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleAdminRole" }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion", "kms:RotateKeyOnDemand" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleUserRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleUserRole" }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } } ] }