키 액세스 문제 해결 - AWS Key Management Service

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

키 액세스 문제 해결

액세스 권한을 부여할 때 고객 마스터 키 (CMK), AWS KMS 다음을 평가합니다.

  • The 주요 정책 이 제품은 CMK. 주요 정책은 항상 AWS 계정을 소유한 CMK.

  • 모두 IAM 정책 이 제품은 IAM 사용자 또는 역할을 수행합니다. IAM 원칙에 대한 CMK 항상 AWS 계정.

  • 모두 보조금 적용되는 CMK.

  • 사용하기 위한 요청에 적용될 수 있는 기타 유형의 정책 CMK과 같은 AWS Organizations 서비스 제어 정책 and VPC 끝점 정책. 이러한 정책은 선택 사항이며 기본적으로 모든 작업을 허용하지만, 원칙에 달리 부여된 권한을 제한할 수 있습니다.

AWS KMS 이 정책 메커니즘을 함께 평가하여 CMK 허용 또는 거부되었습니다. 이를 위해 AWS KMS에서는 다음 흐름 차트에 나온 것과 유사한 프로세스를 사용합니다. 다음 흐름 차트에는 정책 평가 프로세스가 시각적으로 표시됩니다.


      정책 평가 프로세스를 보여 주는 흐름 차트

이 흐름 차트는 두 부분으로 나뉩니다. 각 부분은 차례로 표시되지만 대개 동시에 평가됩니다.

  • 승인 사용 사용 권한이 있는지 여부를 결정합니다. CMK 핵심 정책을 바탕으로 IAM 정책, 보조금 및 기타 관련 정책.

  • 주요 신뢰 신뢰할 수 있는 CMK 을(를) 사용할 수 있습니다. 일반적으로 사용자는 본인의 AWS AWS 계정에 있는 리소스를 신뢰합니다. 하지만 여러분은 CMKs 다른 AWS 지원금 또는 IAM 계정에 있는 정책을 사용하여 CMK.

이 흐름도를 사용하여 발신자가 사용 권한을 허용하거나 거부한 이유를 확인할 수 있습니다. CMK. 사용자의 정책과 권한을 평가할 수도 있습니다. 예를 들어 이 흐름 차트에서는 키 정책, IAM 정책 또는 권한 부여에 명시적 DENY 문이 있거나 명시적 ALLOW 문이 없어서 호출자의 액세스가 거부될 수 있음을 보여줍니다.

이 흐름 차트를 사용하여 몇 가지 일반적인 권한 시나리오를 설명하겠습니다.

예 1 사용자가 CMK 그들의 AWS 계정

Alice는 111122223333 AWS 계정의 IAM 사용자입니다. 그녀는 CMK 동일한 AWS 계정. Alice는 왜 CMK?

이 경우 Alice는 CMK 주요 정책이 없기 때문에 IAM 또는 그에게 필요한 권한을 부여하는 보조금. The CMK의 키 정책은 AWS 사용할 계정 IAM 정책에 대한 액세스를 제어하는 정책 CMK, 하지만 IAM 정책에 따라 앨리스의 허가를 CMK.


               정책 평가 프로세스를 보여 주는 흐름 차트

이 예제와 관련된 정책을 살펴보겠습니다.

  • The CMK 앨리스는 기본 키 정책. 본 정책 허용 AWS 계정 이는 CMK 사용 IAM 정책에 대한 액세스를 제어하는 정책 CMK. 이 키 정책은 흐름 차트에 있는 키 정책에서 호출자의 계정이 IAM 정책을 사용하여 키 액세스를 제어하도록 허용하는가? 조건을 충족합니다.

    { "Version" : "2012-10-17", "Id" : "key-test-1", "Statement" : [ { "Sid" : "Delegate to IAM policies", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" } ] }
  • 하지만 주요 정책은 IAM 정책 또는 보조금이 앨리스(Alice) 허가를 CMK. 따라서 Alice는 CMK.

예 2 사용자는 사용 권한이 있는 경우 CMK 다른 AWS 계정

Bob은 계정 1(111122223333)의 사용자입니다. 그는 CMK 계정 2(444455556666) 암호화 작업. 이렇게 할 수 있는 이유는 무엇입니까?

작은 정보

교차 계정 권한을 평가할 때, 주요 정책은 CMK의 계정. IAM 정책은 호출자가 다른 계정에 속하더라도 호출자의 계정에 지정됩니다.

cmk에 대한 계정 간 액세스 제공에 대한 자세한 내용은 다음을 참조하십시오. 다른 계정의 사용자가 CMK.

  • 에 대한 주요 정책 CMK 계정 2에서 계정 2를 사용할 수 있음 IAM 정책에 대한 액세스를 제어하는 정책 CMK.

  • 에 대한 주요 정책 CMK 계정 2에서 계정 1을 사용하여 CMK 암호화 작업에서. 그러나 계정 1은 IAM 원칙에 대한 접근을 CMK.

  • An IAM 계정 1의 정책을 통해 ExampleRole 사용할 역할 CMK 암호화 작업에 대한 계정 2에서

  • 계정 1의 사용자인 Bob은 ExampleRole 역할을 맡을 수 있는 권한을 가집니다.

  • Bob은 이를 신뢰할 수 있습니다 CMK이는 자신의 계좌에 있지 않더라도 IAM 그의 계정에서 정책에 대한 명확한 사용 권한을 CMK.


               정책 평가 프로세스를 보여 주는 흐름 차트

계정 1의 사용자인 Bob이 사용하는 정책을 고려하십시오. CMK 계정 2.

  • 에 대한 주요 정책 CMK 계정 2(444455556666을(를) 소유한 계정 CMK) 사용 IAM 정책에 대한 액세스를 제어하는 정책 CMK. 이 키 정책은 계정 1(111122223333) CMK 암호화 작업에서 Action 정책 명세서의 요소). 그러나 계정 1의 어느 누구도 CMK 계정 1에서 계정 1을 정의할 때까지 IAM 원칙에 접근할 수 있는 CMK.

    이 흐름 차트에서 계정 2의 이 키 정책은 키 정책에서 호출자의 계정이 IAM 정책을 사용하여 키 액세스를 제어하도록 허용하는가? 조건을 충족합니다.

    { "Id": "key-policy-acct-2", "Version": "2012-10-17", "Statement": [ { "Sid": "Permission to use IAM policies", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow account 1 to use this CMK", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:DescribeKey" ], "Resource": "*" } ] }
  • An IAM 정책에 따라 AWS 계정(계정 1, 111122223333)를 ExampleRole 계정 1 권한에서 역할을 수행하여 CMK 계정 2(444455556666) ). Action 요소는 계정 2의 키 정책이 계정 1에 제공한 것과 동일한 권한을 역할에 제공합니다.

    교차 계정 IAM 이 정책과 같은 정책은 CMK 계정 2에서 계정 1의 사용 권한을 CMK. 또한 계정 1은 키 정책이 계정에 제공한 작업을 수행할 수 있는 권한만 해당 보안 주체에 제공할 수 있습니다.

    이것은 흐름 차트에서 IAM 정책에서 호출자가 이 작업을 수행하도록 허용하는가? 조건을 충족합니다.

    { "Version": "2012-10-17", "Statement": [ { "Principal": { "arn:aws:iam::111122223333:role/ExampleRole" } "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:DescribeKey" ], "Resource": [ "arn:aws:kms:us-west-2:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab" ] } ] }
  • 마지막 필수 요소는 계정 1의 ExampleRole 역할 정의입니다. 역할의 AssumeRolePolicyDocument에 따라 Bob은 ExampleRole 역할을 맡을 수 있습니다.

    { "Role": { "Arn": "arn:aws:iam::111122223333:role/ExampleRole", "CreateDate": "2019-05-16T00:09:25Z", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": { "Principal": { "AWS": "arn:aws:iam::111122223333:user/bob" }, "Effect": "Allow", "Action": "sts:AssumeRole" } }, "Path": "/", "RoleName": "ExampleRole", "RoleId": "AROA4KJY2TU23Y7NK62MV" } }