VPC 엔드포인트를 통해 AWS KMS에 연결 - AWS Key Management Service

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

VPC 엔드포인트를 통해 AWS KMS에 연결

인터넷을 통해 연결하지 않고 VPC의 프라이빗 엔드포인트를 통해 AWS KMS에 직접 연결할 수 있습니다. VPC 엔드포인트를 사용하는 경우 VPC와 AWS KMS 사이의 통신은 모두 AWS 네트워크에서 수행됩니다.

AWS KMS 지원 Amazon Virtual Private Cloud (Amazon VPC) ) 인터페이스 엔드포인트 전 세계에서 AWS PrivateLink. 각 VPC 엔드포인트는 하나 이상의 탄력적 네트워크 인터페이스(ENI) 및 VPC 서브넷의 프라이빗 IP 주소로 표현됩니다.

VPC 인터페이스 엔드포인트는 인터넷 게이트웨이, NAT 디바이스, VPN 연결 또는 연결 없이 VPC를 직접 에 연결합니다. VPC의 인스턴스는 AWS KMS와 통신하는 데 퍼블릭 IP 주소를 필요로 하지 않습니다.

지원되는 AWS 리전

AWS KMS는 Amazon VPCAWS KMS를 모두 사용할 수 있는 모든 AWS 리전의 VPC 엔드포인트를 지원합니다.

AWS KMS VPC 엔드포인트 고려 사항

인터페이스 VPC 끝점을 설정하기 전에 AWS KMS, 인터페이스 끝점 속성 및 제한 사항 주제를 Amazon VPC 사용 설명서.

VPC 엔드포인트에 대한 AWS KMS의 기능 지원은 다음과 같습니다.

  • VPC 인터페이스 엔드포인트를 사용하여 VPC에서 모든 AWS KMS API 작업을 호출할 수 있습니다.

  • AWS KMS에서는 AWS KMS FIPS 엔드포인트에 대한 VPC 인터페이스 엔드포인트 생성을 지원하지 않습니다.

  • 사용할 수 있습니다. AWS CloudTrail 사용하기 위한 로그를 AWS KMS 고객 마스터 키 (CMKs)을 참조하십시오. 자세한 내용은 VPC 엔드포인트 로깅 단원을 참조하십시오.

AWS KMS용 VPC 엔드포인트 생성

Amazon VPC 콘솔 또는 Amazon VPC API를 사용하여 AWS KMS용 VPC 엔드포인트를 생성할 수 있습니다. 자세한 내용은 인터페이스 끝점 만들기 in the Amazon VPC 사용 설명서.

AWS KMS용 VPC 엔드포인트를 생성하려면 다음 서비스 이름을 사용합니다.

com.amazonaws.region.kms

예를 들어 미국 서부(오레곤) 리전(us-west-2)에서 서비스 이름은 다음과 같습니다.

com.amazonaws.us-west-2.kms

VPC 엔드포인트를 더 쉽게 사용하려면 VPC 엔드포인트에 프라이빗 DNS 호스트 이름을 사용하도록 설정합니다. 프라이빗 DNS 이름 활성화 옵션을 선택하면 표준 AWS KMS VPC 호스트 이름(https://kms.<region>.amazonaws.com)이 VPC 엔드포인트로 확인됩니다.

이 옵션을 선택하면 VPC 엔드포인트를 더 쉽게 사용할 수 있습니다. The AWS 스펙 및 AWS CLI 표준을 AWS KMS 기본적으로 DNS 호스트 이름을 지정하므로 응용 프로그램 및 명령에서 VPC 끝점 URL을 지정할 필요가 없습니다.

자세한 내용은 인터페이스 엔드포인트를 통해 서비스 액세스 in the Amazon VPC 사용 설명서.

AWS KMS VPC 엔드포인트에 연결

AWS SDK, AWS CLI 또는 PowerShell용 AWS 도구을 사용하여 VPC 엔드포인트를 통해 AWS KMS에 연결할 수 있습니다. VPC 엔드포인트를 지정하려면 해당 DNS 이름을 사용합니다.

예를 들어 이 list-keys 명령은 endpoint-url 파라미터를 사용해 VPC 엔드포인트를 지정합니다. 이러한 명령을 사용하려면 VPC 엔드포인트 ID 예제를 본인 계정의 ID로 바꿉니다.

$ aws kms list-keys --endpoint-url https://vpce-1234abcdf5678c90a-09p7654s-us-east-1a.ec2.us-east-1.vpce.amazonaws.com

VPC 엔드포인트를 만들 때 프라이빗 호스트 이름을 사용하도록 설정한 경우 CLI 명령 또는 애플리케이션 구성에 VPC 엔드포인트 URL을 지정할 필요가 없습니다. 표준 AWS KMS DNS 호스트 이름(https://kms.<region>.amazonaws.com)을 VPC 엔드포인트로 해결합니다. AWS CLI와 SDK는 기본적으로 이 호스트 이름을 사용하므로 스크립트 및 애플리케이션의 내용을 변경하지 않고 VPC 엔드포인트를 사용할 수 있습니다.

프라이빗 호스트 이름을 사용하려면 VPC의 enableDnsHostnamesenableDnsSupport 속성을 true로 설정해야 합니다. 이러한 속성을 설정하려면 ModifyVpcAttribute 작업을 사용합니다.

VPC 끝점에 대한 액세스 제어

VPC 끝점에 대한 액세스를 제어하려면 AWS KMS, VPC 끝점 정책 귀하의 VPC 엔드포인트에 엔드포인트 정책은 원책임자가 VPC 끝점을 사용하여 호출할 수 있는지 여부를 결정합니다. AWS KMS 작업 AWS KMS 자원.

끝점을 만들 때 VPC 끝점 정책을 만들 수 있으며 언제든지 VPC 끝점 정책을 변경할 수 있습니다. VPC 관리 콘솔 또는 createvpcendpoint 또는 수정 vpcendpoint 작업. 또한 VPC 끝점 정책을 생성하고 변경할 수도 있습니다. 사용 AWS CloudFormation 템플릿. VPC 관리 콘솔을 사용하는 데 도움이 필요하면 인터페이스 끝점 만들기 and 인터페이스 끝점 수정 in the Amazon VPC 사용 설명서.

참고

AWS KMS 는 2020년 7월부터 VPC 엔드포인트 정책을 지원합니다. VPC 엔드포인트 AWS KMS 해당 날짜 이전에 생성된 기본 VPC 끝점 정책, 하지만 언제든지 변경할 수 있습니다.

JSON 정책 문서 작성 및 서식 지정에 대한 도움말은 IAM 사용 설명서IAM JSON 정책 참조를 참조하세요.

VPC 끝점 정책 정보

For an AWS KMS VPC 엔드포인트를 성공적으로 사용할 수 있는 요청으로, 원책임자는 다음 두 가지 소스 사용 권한을 요구합니다.

  • A 주요 정책, IAM 정책, 또는 교부금 자원 운영에 대한 운영 권한을 주고CMK 또는 별칭).

  • VPC 끝점 정책은 요청을 하기 위해 끝점을 사용하도록 주 권한을 제공해야 합니다.

예를 들어, 주요 정책에 따라 해독 특정 CMK에서 그러나 VPC 엔드포인트 정책에 따라 해당 프린터가 호출할 수 없습니다. Decrypt 그 CMK 끝점을 사용하여

또는 VPC 엔드포인트 정책을 통해 프린터가 끝점을 사용하여 호출할 수 있습니다. 장애 특정 cmks 에서 그러나 주요 정책에 대한 권한이 없는 경우 IAM 정책 또는 보조금이 에 실패합니다.

기본 VPC 끝점 정책

모든 VPC 끝점에는 VPC 끝점 정책이 있지만 정책을 지정할 필요는 없습니다. 정책을 지정하지 않으면 기본 끝점 정책이 끝점에 있는 모든 리소스의 모든 원칙에 의해 모든 작업을 허용합니다.

그러나 AWS KMS 원칙은 또한 주요 정책, IAM 정책, 또는 교부금. 따라서 기본적으로 기본 정책에서는 원책임자가 리소스에 대한 작업을 호출할 권한이 있는 경우 끝점을 사용하여 호출할 수 있다고 말합니다.

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Principal": "*", "Resource": "*" } ] }

원책임자가 허용된 작업의 하위 집합에만 VPC 엔드포인트를 사용할 수 있도록 하려면 VPC 끝점 정책 생성 또는 수정.

VPC 엔드포인트 정책 생성

VPC 끝점 정책은 원책임자가 리소스에서 작업을 수행하기 위해 VPC 엔드포인트를 사용할 권한이 있는지 여부를 결정합니다. 대상 AWS KMS 원칙은 또한 주요 정책, IAM 정책, 또는 교부금.

각 VPC 끝점 정책 설명에는 다음 요소가 필요합니다.

  • 작업을 수행할 수 있는 보안 주체.

  • 수행할 수 있는 작업.

  • 작업을 수행할 있는 리소스.

정책 설명은 VPC 끝점을 지정하지 않습니다. 대신 정책이 연결된 모든 VPC 끝점에 적용됩니다. 자세한 내용은 VPC 엔드포인트를 사용하여 서비스 액세스 제어 in the Amazon VPC 사용자 안내서.

다음은 VPC 끝점 정책의 예입니다. AWS KMS. VPC 끝점에 연결된 경우 이 정책은 ExampleUser VPC 엔드포인트를 사용하여 지정된 CMK의 지정된 작업을 호출합니다. 이와 같은 정책을 사용하기 전에 예시를 키 ARN 계정에서 유효한 값을 가지고 있습니다.

{ "Statement":[ { "Sid": "Allow decrypt and view permission", "Principal": {"AWS": "arn:aws:iam::111122223333:user/ExampleUser"}, "Effect":"Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:ListAliases", "kms:ListKeys" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }

AWS CloudTrail VPC 끝점을 사용하는 모든 작업을 기록합니다. 그러나, 귀하의 클라우드트레일 로그에는 다른 계정 또는 운영의 주체가 요청한 운영이 포함되지 않습니다. CMKs 다른 계좌에서.

따라서 외부 계정의 principals를 사용하여 로컬 계정의 키에 있는 모든 KMS 작업을 호출하는 VPC 끝점 정책을 생성할 수 있습니다.

다음 예는 aws:주요 계정 모든 운영에 대한 모든 주체에 대한 접근을 거부하는 글로벌 조건 키 CMKs 원책임자가 현지 계좌에 있지 않은 경우. 이와 같은 정책을 사용하기 전에 예제 계정 ID를 유효한 1로 대체하십시오.

{ "Statement": [ { "Sid": "Access for a specific account", "Principal": {"AWS": "*"}, "Action": "kms:*", "Effect": "Deny", "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "StringNotEquals": { "aws:PrincipalAccount": "111122223333" } } } ] }

VPC 끝점 정책 보기

끝점에 대한 VPC 끝점 정책을 보려면 VPC 관리 콘솔 또는 설명 작업.

다음 AWS CLI 명령은 끝점에 대한 정책을 지정된 VPC 끝점 ID로 가져옵니다.

이 명령을 사용하기 전에 해당 끝점 ID를 계정에서 유효한 1로 대체합니다.

$ aws ec2 describe-vpc-endpoints \ --query 'VpcEndpoints[?VpcEndpointId==`vpce-1234abcdf5678c90a`].[PolicyDocument]' --output text

정책 설명에 VPC 엔드포인트 사용

액세스 권한을 제어할 수 있습니다. AWS KMS VPC에서 요청이 발생하거나 VPC 엔드포인트를 사용하는 경우 리소스 및 운영 이렇게 하려면 다음 중 하나를 사용하십시오. 글로벌 조건 키 에서 주요 정책 또는 IAM 정책.

  • 사용 aws:sourceVpce VPC 엔드포인트에 따라 액세스를 부여하거나 제한하기 위한 상태 키.

  • 사용 aws:sourceVpc 개인 엔드포인트를 호스팅하는 VPC를 기반으로 액세스를 부여하거나 제한하는 조건 키.

참고

주요 정책 및 IAM 정책을 참조하십시오. 정책 문서에 특정 VPC 또는 VPC 엔드포인트에서 요청이 발생하도록 요구하는 경우 통합 요청 AWS 서비스를 제공하는 AWS KMS 을(를) 대신하여 자원이 실패할 수 있습니다. 도움말은 AWS KMS 권한으로 정책에서 VPC 엔드포인트 조건 사용를 참조하십시오.

또한 요청이 Amazon VPC 엔드포인트에서 이루어지는 경우 aws:sourceIP 조건 키는 유효하지 않습니다. 요청을 VPC 엔드포인트로 제한하려면 aws:sourceVpce 또는 aws:sourceVpc 조건 키를 사용합니다. 자세한 내용은 VPC 끝점 - 끝점 사용 제어 in the Amazon VPC 사용자 안내서.

이러한 글로벌 상태 키를 사용하여 액세스를 제어할 수 있습니다. 고객 마스터 키 (CMKs), 별칭 및 생성키 특정 리소스에 의존하지 않습니다.

예를 들어, 다음 샘플 키 정책은 사용자가 일부 암호화 작업을 수행할 수 있도록 합니다. CMK 요청이 지정된 VPC 끝점을 사용하는 경우에만. 사용자가 AWS KMS에 요청하면 요청의 VPC 엔드포인트 ID가 정책의 aws:sourceVpce 조건 키 값과 비교됩니다. 일치하지 않으면 요청이 거부됩니다.

이와 같은 정책을 사용하려면 자리 표시자 AWS 계정 ID 및 VPC 엔드포인트 ID를 계정에 유효한 값으로 바꿉니다.

{ "Id": "example-key-1", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM user permissions", "Effect": "Allow", "Principal": {"AWS":["111122223333"]}, "Action": ["kms:*"], "Resource": "*" }, { "Sid": "Restrict usage to my VPC endpoint", "Effect": "Deny", "Principal": "*", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1234abcdf5678c90a" } } } ] }

또한 aws:sourceVpc 상태 키를 사용하여 CMKs VPC 끝점이 있는 VPC를 기반으로 합니다.

다음 샘플 키 정책은 관리를 관리하는 명령을 허용합니다. CMK 오로지 vpc-12345678. 또한 이를 사용하여 CMK 암호화 작업의 경우 vpc-2b2b2b2b. 응용 프로그램이 하나의 VPC에서 실행되는 경우 이 정책을 사용할 수 있지만 관리 기능을 위해 분리된 두 번째 VPC를 사용합니다.

이와 같은 정책을 사용하려면 자리 표시자 AWS 계정 ID 및 VPC 엔드포인트 ID를 계정에 유효한 값으로 바꿉니다.

{ "Id": "example-key-2", "Version": "2012-10-17", "Statement": [ { "Sid": "Allow administrative actions from vpc-12345678", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "kms:Create*","kms:Enable*","kms:Put*","kms:Update*", "kms:Revoke*","kms:Disable*","kms:Delete*", "kms:TagResource", "kms:UntagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpc": "vpc-12345678" } } }, { "Sid": "Allow key usage from vpc-2b2b2b2b", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "kms:Encrypt","kms:Decrypt","kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpc": "vpc-2b2b2b2b" } } }, { "Sid": "Allow read actions from everywhere", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "kms:Describe*","kms:List*","kms:Get*" ], "Resource": "*", } ] }

VPC 엔드포인트 로깅

AWS CloudTrail VPC 끝점을 사용하는 모든 작업을 기록합니다. AWS KMS 요청에 VPC 엔드포인트를 사용하면 요청을 기록하는 AWS CloudTrail 로그 항목에 VPC 엔드포인트 ID가 표시됩니다. 엔드포인트 ID를 사용하여 AWS KMS VPC 엔드포인트의 사용을 감사할 수 있습니다.

하지만, CloudTrail 다른 계정이나 요청의 원칙에 의해 요청된 운영이 포함되지 않습니다. AWS KMS 작업 CMKs 및 다른 계좌의 별칭. 또한 VPC를 보호하기 위해 VPC 끝점 정책님, 그렇지 않은 경우, 이(가) 허용되지 않습니다. AWS CloudTrail.

예를 들어, 이 샘플 로그 항목은 VPC 엔드포인트를 사용한 GenerateDataKey 요청을 기록합니다. 로그 항목 끝에 vpcEndpointId 필드가 나타납니다.

{ "eventVersion":"1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accessKeyId": "EXAMPLE_KEY_ID", "accountId": "111122223333", "userName": "Alice" }, "eventTime":"2018-01-16T05:46:57Z", "eventSource":"kms.amazonaws.com", "eventName":"GenerateDataKey", "awsRegion":"eu-west-1", "sourceIPAddress":"172.01.01.001", "userAgent":"aws-cli/1.14.23 Python/2.7.12 Linux/4.9.75-25.55.amzn1.x86_64 botocore/1.8.27", "requestParameters":{ "keyId":"1234abcd-12ab-34cd-56ef-1234567890ab", "numberOfBytes":128 }, "responseElements":null, "requestID":"a9fff0bf-fa80-11e7-a13c-afcabff2f04c", "eventID":"77274901-88bc-4e3f-9bb6-acf1c16f6a7c", "readOnly":true, "resources":[{ "ARN":"arn:aws:kms:eu-west-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId":"111122223333", "type":"AWS::KMS::Key" }], "eventType":"AwsApiCall", "recipientAccountId":"111122223333", "vpcEndpointId": "vpce-1234abcdf5678c90a" }