별칭을 사용하여 KMS 키에 대한 액세스 제어 - AWS Key Management Service

별칭을 사용하여 KMS 키에 대한 액세스 제어

KMS 키와 연결된 별칭을 기반으로 KMS 키에 대한 액세스를 제어할 수 있습니다. 이렇게 하려면 kms:RequestAliaskms:ResourceAliases 조건 키를 사용합니다. 이 기능은 속성 기반 액세스 제어(ABAC)에 대한 AWS KMS 지원의 일부입니다.

kms:RequestAlias 조건 키는 요청의 별칭을 기반으로 KMS 키에 대한 액세스를 허용하거나 거부합니다. kms:ResourceAliases 조건 키는 KMS 키와 연결된 별칭을 기반으로 KMS 키에 대한 액세스를 허용하거나 거부합니다.

이러한 기능을 사용하면 정책문의 resource 요소에 별칭을 사용하여 KMS 키를 식별할 수 없습니다. 별칭이 resource 요소의 값인 경우 정책은 별칭 리소스와 연결될 수 있는 KMS 키가 아니라 별칭 리소스에 적용됩니다.

참고

태그 및 별칭 변경으로 KMS 키 인증에 영향을 미치는 데 최대 5분이 소요될 수 있습니다. 최근 변경 사항은 권한 부여에 영향을 미치기 전에 API 작업에서 볼 수 있습니다.

별칭을 사용하여 KMS 키에 대한 액세스를 제어할 때는 다음 사항을 고려해야 합니다.

  • 최소 권한 액세스를 강화하는 최고의 방식을 별칭을 사용하는 것입니다. IAM 보안 주체에 사용하거나 관리해야 하는 KMS 키에만 필요한 권한만 부여합니다. 예를 들어 별칭을 사용하여 프로젝트에 사용되는 KMS 키를 식별합니다. 그런 다음 프로젝트 팀에 프로젝트 별칭과 함께 KMS 키만 사용할 수 있는 권한을 부여합니다.

  • 보안 주체에게 별칭을 추가, 편집 및 삭제할 수 있는 kms:CreateAlias, kms:UpdateAlias 또는 kms:DeleteAlias 권한을 부여할 때는 주의해야 합니다. 별칭을 사용하여 KMS 키에 대한 액세스를 제어하는 경우 별칭을 변경하면 보안 주체에게 사용 권한이 없는 KMS 키를 사용할 수 있는 권한이 부여될 수도 있습니다. 또한 다른 보안 주체가 작업을 수행하는 데 필요한 KMS 키에 대한 액세스를 거부할 수도 있습니다.

  • 현재 별칭을 관리할 권한이 있는 AWS 계정 의 보안 주체를 검토하고 필요한 경우 권한을 조정합니다. 키 정책을 변경하거나 권한 부여를 생성할 권한이 없는 키 관리자는 별칭을 관리할 권한이 있는 경우 KMS 키에 대한 액세스를 제어할 수 있습니다.

    예를 들어, 키 관리자에 대한 콘솔 기본 키 정책에는 kms:CreateAlias, kms:DeleteAliaskms:UpdateAlias 권한이 포함됩니다. IAM 정책은 AWS 계정 의 모든 KMS 키에 대한 별칭 권한을 부여할 수 있습니다. 예를 들어, AWSKeyManagementServicePowerUser 관리형 정책은 보안 주체가 모든 KMS 키에 대한 별칭을 생성, 삭제 및 나열하도록 허용하지만 업데이트할 수는 없습니다.

  • 별칭에 따라 달라지는 정책을 설정하기 전에 AWS 계정 에 있는 KMS 키의 별칭을 검토합니다. 포함하려는 별칭에만 정책을 적용해야 합니다. CloudTrail 로그CloudWatch 경보를 사용하여 KMS 키에 대한 액세스에 영향을 줄 수 있는 별칭 변경 사항을 알립니다. 또한, ListAliases 응답에는 각 별칭에 대한 생성 날짜 및 최종 업데이트 날짜가 포함됩니다.

  • 별칭 정책 조건은 패턴 일치를 사용하며 별칭의 특정 인스턴스에 연결되어 있지 않습니다. 별칭 기반 조건 키를 사용하는 정책은 패턴과 일치하는 모든 새 별칭과 기존 별칭에 영향을 줍니다. 정책 조건과 일치하는 별칭을 삭제했다가 다시 만들면 이전 별칭과 마찬가지로 새 별칭에도 조건이 적용됩니다.

kms:RequestAlias 조건 키는 작업 요청에 명시적으로 지정된 별칭에 따라 달라집니다. kms:ResourceAliases 조건 키는 요청에 나타나지 않더라도 KMS 키와 연결된 별칭에 따라 달라집니다.

kms:RequestAlias

요청에서 KMS 키를 식별하는 별칭을 기반으로 KMS 키에 대한 액세스를 허용하거나 거부합니다. 키 정책 또는 IAM 정책에서 kms:RequestAlias 조건 키를 사용할 수 있습니다. 별칭을 사용하여 요청에서 KMS 키를 식별하는 작업, 즉, 암호화 작업, DescribeKeyGetPublicKey에 적용됩니다. CreateAlias 또는 DeleteAlias와 같은 별칭 작업에는 유효하지 않습니다.

조건 키에서 별칭 이름 또는 별칭 이름 패턴을 지정합니다. 별칭 ARN을 지정할 수 없습니다.

예를 들어 다음 키 정책문은 보안 주체가 KMS 키에 대해 지정된 작업을 사용할 수 있도록 허용합니다. 권한은 요청에서 alpha가 포함된 별칭을 사용하여 KMS 키를 식별하는 경우에만 유효합니다.

{ "Sid": "Key policy using a request alias condition", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/alpha-developer" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringLike": { "kms:RequestAlias": "alias/*alpha*" } } }

권한이 부여된 보안 주체의 다음 예제 요청은 조건을 충족합니다. 그러나, 키 ID, 키 ARN 또는 다른 별칭을 사용한 요청은 이러한 값이 동일한 KMS 키를 식별하더라도 조건을 충족하지 않습니다.

$ aws kms describe-key --key-id "arn:aws:kms:us-west-2:111122223333:alias/project-alpha"

kms:ResourceAliases

별칭이 요청에 사용되지 않더라도 KMS 키와 연결된 별칭을 기반으로 KMS 키에 대한 액세스를 허용하거나 거부합니다. kms:ResourceAliases 조건 키를 사용하면 별칭 또는 별칭 패턴(예: alias/test*)을 지정할 수 있으므로 IAM 정책에서 이를 사용하여 동일한 리전의 여러 KMS 키에 대한 액세스를 제어할 수 있습니다. KMS 키를 사용하는 모든 AWS KMS 작업에 유효합니다

예를 들어, 다음 IAM 정책을 통해 보안 주체는 두 개의 AWS 계정 에서 KMS 키에 대한 자동 키 교체를 관리할 수 있습니다. 그러나 권한은 restricted로 시작하는 별칭과 연결된 KMS 키에만 적용됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": [ "kms:EnableKeyRotation", "kms:DisableKeyRotation", "kms:GetKeyRotationStatus" ], "Resource": [ "arn:aws:kms:*:111122223333:key/*", "arn:aws:kms:*:444455556666:key/*" ], "Condition": { "ForAnyValue:StringLike": { "kms:ResourceAliases": "alias/restricted*" } } } ] }

kms:ResourceAliases 조건은 조건은 요청이 아니라 리소스의 조건입니다. 따라서 별칭을 지정하지 않은 요청은 여전히 조건을 충족할 수 있습니다.

일치하는 별칭을 지정하는 다음 예제 요청은 조건을 충족합니다.

$ aws kms enable-key-rotation --key-id "alias/restricted-project"

그러나 다음 예제 요청은 해당 별칭이 요청에 사용되지 않더라도 지정된 KMS 키에 restricted로 시작하는 별칭이 있는 경우 조건을 충족합니다.

$ aws kms enable-key-rotation --key-id "1234abcd-12ab-34cd-56ef-1234567890ab"