외부 키 스토어에 대한 액세스 제어 - AWS Key Management Service

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

외부 키 스토어에 대한 액세스 제어

표준 KMS 키와 함께 사용하는 모든 AWS KMS 액세스 제어 기능(키 정책, IAM 정책권한 부여)은 외부 키 스토어의 KMS 키에 대해 동일한 방식으로 작동합니다. IAM 정책을 사용하여 외부 키 스토어를 생성하고 관리하는 API 작업에 대한 액세스를 제어할 수 있습니다. IAM 정책과 키 정책을 사용하여 외부 키 스토어에서 AWS KMS keys에 대한 액세스를 제어할 수 있습니다. AWS 조직에 대한 서비스 제어 정책VPC 엔드포인트 정책을 사용하여 외부 키 스토어의 KMS 키에 대한 액세스를 제어할 수도 있습니다.

사용자와 역할에 수행할 가능성이 있는 작업에 필요한 권한만 제공하는 것이 좋습니다.

외부 키 스토어 관리자 권한 부여

외부 키 스토어를 생성하고 관리하는 보안 주체는 사용자 지정 키 스토어 작업에 대한 권한을 필요로 합니다. 다음 목록에는 외부 키 스토어 관리자에게 필요한 최소 권한이 설명되어 있습니다. 사용자 지정 키 스토어는 AWS 리소스가 아니므로 다른 AWS 계정에 있는 보안 주체에 대한 권한을 외부 키 스토어에 제공할 수 없습니다.

  • kms:CreateCustomKeyStore

  • kms:DescribeCustomKeyStores

  • kms:ConnectCustomKeyStore

  • kms:DisconnectCustomKeyStore

  • kms:UpdateCustomKeyStore

  • kms:DeleteCustomKeyStore

외부 키 스토어를 생성하는 보안 주체는 외부 키 스토어 구성 요소를 생성하고 구성할 수 있는 권한을 필요로 합니다. 보안 주체는 자신의 계정에서만 외부 키 스토어를 생성할 수 있습니다. VPC 엔드포인트 서비스 연결이 있는 외부 키 스토어를 생성하려면 보안 주체에 다음 구성 요소를 생성할 수 있는 권한이 있어야 합니다.

  • Amazon VPC

  • 퍼블릭 및 프라이빗 서브넷

  • Network Load Balancer 및 대상 그룹

  • Amazon VPC 엔드포인트 서비스

자세한 내용은 Amazon VPC용 Identity and Access Management, VPC 엔드포인트 및 VPC 엔드포인트 서비스에 대한 ID 및 액세스 관리Elastic Load Balancing API 권한을 참조하세요.

외부 키 스토어의 KMS 키 사용자에게 권한 부여

외부 키 스토어에서 AWS KMS keys를 생성하고 관리하는 보안 주체에는 AWS KMS에서 모든 KMS 키를 생성하고 관리하는 사람과 동일한 권한이 필요합니다. 외부 키 스토어의 KMS 키에 대한 기본 키 정책은 AWS KMS의 KMS 키에 대한 기본 키 정책과 동일합니다. 태그와 별칭을 사용하여 KMS 키에 대한 액세스를 제어하는 속성 기반 액세스 제어(ABAC)는 외부 키 스토어의 KMS 키에도 유효합니다.

암호화 작업을 위해 사용자 지정 키 스토어에서 KMS 키를 사용하는 보안 주체에게는 kms:Decrypt 같은 암호화 작업을 KMS 키에서 수행할 수 있는 권한이 필요합니다. IAM 또는 키 정책에서 이러한 권한을 제공할 수 있습니다. 하지만 사용자 지정 키 스토어에서 KMS 키를 사용하기 위해 어떠한 추가 권한도 필요하지 않습니다.

외부 키 스토어의 KMS 키에만 적용되는 권한을 설정하려면 값이 EXTERNAL_KEY_STOREkms:KeyOrigin 정책 조건을 사용합니다. 이 조건을 사용하여 kms: CreateKey 권한 또는 KMS 키 리소스와 관련된 모든 권한을 제한할 수 있습니다. 예를 들어 다음 IAM 정책은 KMS 키가 외부 키 스토어에 있는 경우 연결된 ID가 계정의 모든 KMS 키에 대해 지정된 작업을 호출하도록 허용합니다. 외부 키 스토어의 KMS 키와 AWS 계정의 KMS 키로 권한을 제한할 수 있지만 계정의 특정 외부 키 스토어로는 권한을 제한할 수 없습니다.

{ "Sid": "AllowKeysInExternalKeyStores", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringEquals": { "kms:KeyOrigin": "EXTERNAL_KEY_STORE" } } }

AWS KMS가 외부 키 스토어 프록시와 통신할 수 있도록 권한 부여

AWS KMS는 사용자가 제공하는 외부 키 스토어 프록시를 통해서만 외부 키 관리자와 통신합니다. AWS KMS는 사용자가 지정한 외부 키 스토어 프록시 인증 자격 증명으로 Signature Version 4(SigV4) 프로세스를 사용하여 요청에 서명하여 프록시에 인증합니다. 외부 키 스토어 프록시에 퍼블릭 엔드포인트 연결을 사용하는 경우 AWS KMS에는 추가 권한이 필요하지 않습니다.

그러나 VPC 엔드포인트 서비스 연결을 사용하는 경우 AWS KMS에 Amazon VPC 엔드포인트 서비스에 대한 인터페이스 엔드포인트를 생성할 수 있는 권한을 부여해야 합니다. 이 권한은 외부 키 스토어 프록시가 VPC에 있는지 아니면 다른 곳에 있는지에 관계없이 필요하지만 VPC 엔드포인트 서비스를 사용하여 AWS KMS와 통신합니다.

인터페이스 엔드포인트 생성을 AWS KMS 허용하려면 Amazon VPC 콘솔 또는 작업을 사용하십시오. ModifyVpcEndpointServicePermissions 보안 주체 cks.kms.<region>.amazonaws.com에 대한 권한을 허용합니다.

예를 들어 다음 AWS CLI 명령을 사용하면 AWS KMS가 미국 서부(오레곤)(us-west-2) 리전의 지정된 VPC 엔드포인트 서비스에 연결할 수 있습니다. 이 명령을 사용하기 전에 Amazon VPC 서비스 ID와 AWS 리전을 구성에 유효한 값으로 바꿉니다.

modify-vpc-endpoint-service-permissions --service-id vpce-svc-12abc34567def0987 --add-allowed-principals '["cks.kms.us-west-2.amazonaws.com"]'

이 권한을 제거하려면 Amazon VPC 콘솔 또는 를 ModifyVpcEndpointServicePermissions파라미터와 함께 사용하십시오. RemoveAllowedPrincipals

외부 키 스토어 프록시 권한 부여(선택 사항)

일부 외부 키 스토어 프록시는 외부 키 사용에 대한 권한 부여 요구 사항을 구현합니다. 외부 키 스토어 프록시는 특정 사용자가 특정 조건에서만 특정 작업을 요청할 수 있도록 하는 권한 부여 체계를 설계하고 구현하는 데 허용되지만 필수는 아닙니다. 예를 들어 사용자 A가 특정 외부 키로 암호화할 수는 있지만 복호화할 수는 없도록 프록시를 구성할 수 있습니다.

프록시 권한 부여는 AWS KMS가 모든 외부 키 스토어 프록시에 요구하는 SigV4 기반 프록시 인증과는 별개입니다. 또한 외부 키 스토어 또는 해당 KMS 키에 영향을 미치는 작업에 대한 액세스 권한을 부여하는 키 정책, IAM 정책 및 권한 부여와도 독립적입니다.

외부 키 스토어 프록시에 의한 권한 부여를 활성화하기 위해 AWS KMS는 호출자, KMS 키, AWS KMS 작업, AWS 서비스(있는 경우)를 포함하여 각 프록시 API 요청에 메타데이터를 포함합니다. 외부 키 프록시 API의 버전 1(v1)에 대한 요청 메타데이터는 다음과 같습니다.

"requestMetadata": { "awsPrincipalArn": string, "awsSourceVpc": string, // optional "awsSourceVpce": string, // optional "kmsKeyArn": string, "kmsOperation": string, "kmsRequestId": string, "kmsViaService": string // optional }

예를 들어 특정 보안 주체(awsPrincipalArn)의 요청을 허용하되 특정 AWS 서비스(kmsViaService)가 보안 주체를 대신하여 요청하는 경우에만 허용하도록 프록시를 구성할 수 있습니다.

프록시 권한 부여에 실패하면 관련 AWS KMS 작업이 실패하고 오류를 설명하는 메시지가 표시됩니다. 자세한 내용은 프록시 권한 부여 문제 섹션을 참조하세요.

mTLS 인증(선택 사항)

외부 키 스토어 프록시가 AWS KMS의 요청을 인증할 수 있도록 AWS KMS는 외부 키 스토어에 대한 Signature V4(SigV4) 프록시 인증 자격 증명을 사용하여 외부 키 스토어 프록시에 대한 모든 요청에 서명합니다.

외부 키 스토어 프록시가 AWS KMS 요청에만 응답하도록 추가로 보장하기 위해 일부 외부 키 프록시는 트랜잭션 양 당사자가 인증서를 사용하여 서로를 인증하는 mTLS(상호 전송 계층 보안)를 지원합니다. mTLS는 표준 TLS가 제공하는 서버 측 인증에 클라이언트 측 인증(외부 키 스토어 프록시 서버가 AWS KMS 클라이언트를 인증)을 추가합니다. 드물지만 프록시 인증 자격 증명이 손상된 경우 mTLS는 제3자가 외부 키 스토어 프록시에 대한 API 요청을 성공적으로 수행하지 못하도록 합니다.

mTLS를 구현하려면 다음 속성을 가진 클라이언트 측 TLS 인증서만 허용하도록 외부 키 스토어 프록시를 구성합니다.

  • TLS 인증서의 주체 일반 이름은 cks.kms.<Region>.amazonaws.com여야 합니다(예: cks.kms.eu-west-3.amazonaws.com).

  • 인증서는 Amazon 신뢰 서비스와 연결된 인증 기관에 연결되어 있어야 합니다.