Verbindung zu AWS KMS über einen VPC-Endpunkt - AWS Key Management Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verbindung zu AWS KMS über einen VPC-Endpunkt

Sie können über einen privaten Schnittstellenendpunkt in Ihrer Virtual Private Cloud (VPC) eine direkte Verbindung zu AWS KMS herzustellen. Wenn Sie den VPC-Endpunkt einer Schnittstelle verwenden, findet die Kommunikation zwischen Ihrer VPC und AWS KMS vollständig innerhalb des AWS-Netzwerks statt.

AWS KMS unterstützt Endpunkte von Amazon Virtual Private Cloud (Amazon VPC), die von AWS PrivateLink bereitgestellt werden. Jeder VPC-Endpunkt wird durch eine oder mehrere Elastic Network-Schnittstellen (ENIs) mit privaten IP-Adressen in Ihren VPC-Subnetzen repräsentiert.

Der Schnittstellen-VPC-Endpunkt verbindet Ihre VPC direkt mit AWS KMS, ohne ein Internet-Gateway, ein NAT-Gerät, eine VPN-Verbindung oder eine AWS Direct Connect-Verbindung. Die Instances in Ihrer VPC benötigen für die Kommunikation mit AWS KMS keine öffentlichen IP-Adressen.

Regionen

AWS KMS unterstützt VPC-Endpunkte und VPC-Endpunktrichtlinien in allen AWS-Regionen, in denen AWS KMS unterstützt wird.

Überlegungen zu AWS KMS-VPC-Endpunkten

Bevor Sie einen Schnittstellen-VPC-Endpunkt für AWS KMS einrichten, lesen Sie unbedingt das Thema Schnittstellen-Endpunkte, Eigenschaften und Einschränkungen im AWS PrivateLink-Leitfaden.

AWS KMS-Support für einen VPC-Endpunkt umfasst Folgendes.

  • Sie können den VPC-Endpunkt verwenden, um alle AWS KMS-API-Vorgänge in Ihrer VPC aufzurufen.

  • Sie können einen Schnittstellen-VPC-Endpunkt erstellen, der eine Verbindung mit einem AWS KMS-Regionsendpunkt oder einem AWS KMS-FIPS-Endpunkt herstellt.

  • Sie können anhand von AWS CloudTrail-Protokollen Ihre Verwendung von KMS-Schlüsseln durch den VPC-Endpunkt überwachen. Details hierzu finden Sie unter Protokollieren des VPC-Endpunkts.

Erstellung eines VPC-Endpunkts für AWS KMS

Sie können einen VPC-Endpunkt für AWS KMS mithilfe der Amazon-VPC-Konsole oder der Amazon-VPC-API erstellen. Weitere Informationen finden Sie unter Erstellen eines Schnittstellenendpunkts im AWS PrivateLink-Leitfaden.

  • Zur Erstellung eines VPC-Endpunkts für AWS KMS verwenden Sie den folgenden Servicenamen:

    com.amazonaws.region.kms

    In der Region USA West (Oregon) (us-west-2) würde der Servicename wie folgt lauten:

    com.amazonaws.us-west-2.kms
  • Verwenden Sie den folgenden Servicenamen, um einen VPC-Endpunkt zu erstellen, der eine Verbindung zu einem AWS KMS-FIPS-Endpunkt herstellt:

    com.amazonaws.region.kms-fips

    In der Region USA West (Oregon) (us-west-2) würde der Servicename wie folgt lauten:

    com.amazonaws.us-west-2.kms-fips

Um die Verwendung des VPC-Endpunkts zu vereinfachen, können Sie einen privaten DNS-Namen für Ihren VPC-Endpunkt aktivieren. Wenn Sie die Option Enable Private DNS Name (Privaten DNS-Namen aktivieren) auswählen, wird der standardmäßige AWS KMS-DNS-Hostname in Ihren VPC-Endpunkt aufgelöst. https://kms.us-west-2.amazonaws.com würde beispielsweise in einen VPC-Endpunkt aufgelöst, der mit dem Servicenamen com.amazonaws.us-west-2.kms verbunden ist.

Diese Option vereinfacht die Verwendung des VPC-Endpunkts. Die AWS und die AWS CLI-SDKs verwenden darüber hinaus standardmäßig den AWS KMS-Standard-DNS-Hostnamen. Daher müssen Sie die URL des VPC-Endpunkts in Anwendungen und Befehlen nicht angeben.

Weitere Informationen finden Sie unter Zugriff auf einen Service über einen Schnittstellenendpunkt im AWS PrivateLink-Leitfaden.

Herstellen einer Verbindung mit einem AWS KMS-VPC-Endpunkt

Sie können über einen AWS-SDK, über die AWS CLI oder über AWS Tools for PowerShell mittels eines VPC-Endpunkts eine Verbindung mit AWS KMS herstellen. Um den VPC-Endpunkt anzugeben, verwenden Sie seinen DNS-Namen.

Dieser list-keys-Befehl verwendet zur Angabe des VPC-Endpunkts z. B. den Parameter endpoint-url. Wenn Sie einen solchen Befehl verwenden möchten, ersetzen Sie die Beispiels-ID des VPC-Endpunkts durch eine ID in Ihrem Konto.

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

Wenn Sie beim Erstellen Ihres VPC-Endpunkts private Hostnamen aktiviert waren, müssen Sie die URL des Endpunkts in Ihren CLI-Befehlen oder in Ihrer Anwendungskonfiguration angeben. In diesem Fall wird der standardmäßige AWS KMS-DNS-Hostname in Ihren VPC-Endpunkt aufgelöst. Die AWS CLI und SDKs verwenden diesen Hostnamen standardmäßig. Daher sind vor der Verwendung des VPC-Endpunkts zum Herstellen einer Verbindung mit einem regionalen AWS KMS-Endpunkt keine Änderungen in Ihren Skripts und in Ihrer Anwendung erforderlich.

Zur Verwendung privater Hostnamen müssen die Attribute enableDnsHostnames und enableDnsSupport Ihrer VPC auf true eingestellt sein. Um diese Attribute festzulegen, verwenden Sie die -ModifyVpcAttributeOperation. Details dazu finden Sie unter Anzeigen und Aktualisieren von DNS-Attributen für Ihre VPC im Amazon-VPC-Benutzerhandbuch.

Steuern des Zugriffs auf einen VPC-Endpunkt

Um den Zugriff auf Ihren VPC-Endpunkt für AWS KMS zu steuern, fügen Sie Ihrem VPC-Endpunkt eine VPC Endpunktrichtlinie an. Die Endpunktrichtlinie bestimmt, ob Prinzipale den VPC-Endpunkt verwenden können, um AWS KMS-Operationen für AWS KMS-Ressourcen aufzurufen.

Sie können beim Erstellen des Endpunkts eine VPC-Endpunktrichtlinie erstellen und die VPC-Endpunktrichtlinie jederzeit ändern. Verwenden Sie die VPC-Managementkonsole oder die - CreateVpcEndpoint oder -ModifyVpcEndpointOperationen. Sie können eine VPC-Endpunktrichtlinie auch erstellen und ändern, indem Sie eine AWS CloudFormation-Vorlage verwenden. Hilfe zur Verwendung der VPC-Managementkonsole finden Sie unter Erstellen eines Schnittstellenendpunkts und Ändern eines Schnittstellenendpunkts im AWS PrivateLink-Leitfaden.

Anmerkung

AWS KMS unterstützt VPC-Endpunktrichtlinien ab Juli 2020. VPC-Endpunkte für AWS KMS, die vor diesem Datum erstellt wurden, haben die Standard-VPC-Endpunktrichtlinie. Sie können diese jedoch jederzeit ändern.

Hilfe beim Schreiben und Formatieren eines JSON-Richtliniendokuments finden Sie in der IAM-JSON-Richtlinienreferenz im IAM-Benutzerhandbuch.

Weitere Informationen über VPC-Endpunktrichtlinien

Damit eine AWS KMS-Anforderung, die einen VPC-Endpunkt verwendet, erfolgreich ist, benötigt der Prinzipal Berechtigungen aus zwei Quellen:

  • Eine -Schlüsselrichtlinie, IAM-Richtlinie oder Erteilung muss dem Prinzipal die Berechtigung erteilen, die Operation für die Ressource (KMS-Schlüssel oder Alias) aufzurufen.

  • Eine VPC-Endpunktrichtlinie muss dem Prinzipal die Berechtigung erteilen, den Endpunkt für die Anforderung zu verwenden.

So kann eine Schlüsselrichtlinie einem Prinzipal die Berechtigung zum Aufrufen von Decrypt auf einen bestimmten KMS-Schlüssel erteilen. Allerdings könnte die VPC-Endpunktrichtlinie diesem Prinzipal nicht erlauben, Decrypt auf diesem KMS-Schlüssel mithilfe des Endpunkts aufzurufen.

Oder eine VPC-Endpunktrichtlinie kann es einem Prinzipal ermöglichen, den Endpunkt für den Aufruf DisableKey bestimmter KMS-Schlüssel zu verwenden. Wenn der Prinzipal jedoch nicht über diese Berechtigungen aus einer Schlüsselrichtlinie, IAM-Richtlinie oder Erteilung verfügt, schlägt die Anforderung fehl.

Standard-VPC-Endpunktrichtlinie

Jeder VPC-Endpunkt verfügt über eine VPC-Endpunktrichtlinie. Sie müssen die Richtlinie jedoch nicht angeben. Wenn Sie keine Richtlinie angeben, erlaubt die standardmäßige Endpunktrichtlinie alle Operationen aller Prinzipale auf allen Ressourcen über den Endpunkt.

Allerdings muss der Prinzipal für AWS KMS-Ressourcen auch die Berechtigung zum Aufrufen der Operation von einer Schlüsselrichtlinie, IAM-Richtlinie oder Erteilung haben. Daher besagt die Standardrichtlinie in der Praxis, dass, wenn ein Prinzipal über die Berechtigung zum Aufrufen einer Operation für eine Ressource verfügt, diese auch mithilfe des Endpunkts aufrufen kann.

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

Damit Prinzipale den VPC-Endpunkt nur für eine Teilmenge ihrer zulässigen Operationen verwenden können, erstellen oder aktualisieren Sie die VPC-Endpunktrichtlinie.

Erstellen einer VPC-Endpunktrichtlinie

Eine VPC-Endpunktrichtlinie bestimmt, ob ein Prinzipal die Berechtigung hat, den VPC-Endpunkt zum Ausführen von Operationen auf einer Ressource zu verwenden. Allerdings muss der Prinzipal für AWS KMS-Ressourcen auch die Berechtigung zum Aufrufen der Operation von einer Schlüsselrichtlinie, IAM-Richtlinie oder Erteilung haben.

Für jede VPC-Endpunktrichtlinie sind die folgenden Elemente erforderlich:

  • Der Prinzipal, der die Aktionen ausführen kann

  • Aktionen, die ausgeführt werden können

  • Ressourcen, für die Aktionen ausgeführt werden können

Die Richtlinienanweisung gibt den VPC-Endpunkt nicht an. Stattdessen gilt sie für jeden VPC-Endpunkt, dem die Richtlinie angefügt ist. Weitere Informationen finden Sie unter Steuerung des Zugriffs auf Services mit VPC-Endpunkten im Amazon-VPC-Benutzerhandbuch.

Das Folgende ist ein Beispiel für eine VPC-Endpunktrichtlinie für AWS KMS. An einen VPC-Endpunkt angefügt, erlaubt diese Richtlinie es ExampleUser, den VPC-Endpunkt zum Aufrufen der angegebenen Operationen für die angegebenen KMS-Schlüssel zu verwenden. Bevor Sie eine solche Richtlinie verwenden, ersetzen Sie den Beispiel-Prinzipal und Schüssel-ARN mit gültigen Werten aus Ihrem Konto.

{ "Statement":[ { "Sid": "AllowDecryptAndView", "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 protokolliert alle Operationen, die den VPC-Endpunkt verwenden. Ihre CloudTrail Protokolle enthalten jedoch keine Operationen, die von Prinzipalen in anderen Konten angefordert werden, oder Operationen für KMS-Schlüssel in anderen Konten.

Daher möchten Sie möglicherweise eine VPC-Endpunktrichtlinie erstellen, die verhindert, dass Prinzipale in externen Konten den VPC-Endpunkt zum Aufrufen von AWS KMS-Operationen für alle Schlüssel im lokalen Konto nutzen.

Im folgenden Beispiel wird der globale Bedingungsschlüssel aws:PrincipalAccount verwendet, um allen Prinzipalen den Zugriff für alle Operationen auf allen KMS-Schlüsseln zu verweigern, es sei denn, der Prinzipal befindet sich im lokalen Konto. Bevor Sie eine Richtlinie wie diese verwenden, ersetzen Sie die Beispiel-Konto-ID durch eine gültige.

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

Anzeigen einer VPC-Endpunktrichtlinie

Um die VPC-Endpunktrichtlinie für einen Endpunkt anzuzeigen, verwenden Sie die VPC-Managementkonsole oder die -DescribeVpcEndpointsOperation.

Der folgende AWS CLI-Befehl ruft die Richtlinie für den Endpunkt mit der angegebenen VPC-Endpunkt-ID ab.

Bevor Sie diesen Befehl ausführen, ersetzen Sie die Beispiel-Endpunkt-ID durch eine gültige aus Ihrem Konto.

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

Verwenden eines VPC-Endpunkts in einer Richtlinienanweisung

Sie können den Zugriff auf AWS KMS-Ressourcen und -Operationen steuern, wenn die Anforderung von VPC stammt oder einen VPC-Endpunkt verwendet. Verwenden Sie dazu einen der folgenden globalen Bedingungsschlüssel in einer Schlüsselrichtlinie oder IAM-Richtlinie.

  • Verwenden Sie den aws:sourceVpce-Bedingungsschlüssel zum Erteilen oder Beschränken des Zugriffs anhand des VPC-Endpunkts.

  • Verwenden Sie den aws:sourceVpc-Bedingungsschlüssel zum Erteilen oder Beschränken des Zugriffs anhand des VPC, auf der der private Endpunkt gehostet wird.

Anmerkung

Beim Erstellen von Schlüsselrichtlinien und IAM-Richtlinien anhand von Ihrem VPC-Endpunkt ist Vorsicht geboten. Wenn eine Richtlinienanweisung verlangt, dass Anforderungen von einer bestimmten VPC oder einem bestimmten VPC-Endpunkt stammen müssen, schlagen Anforderungen von integrierten AWS-Services, die eine AWS KMS-Ressource in Ihrem Namen verwenden, möglicherweise fehl. Weitere Informationen dazu finden Sie unter Verwendung von VPC Endpunktbedingungen in Richtlinien mit Berechtigungen AWS KMS.

Weiterhin ist der Bedingungsschlüssel aws:sourceIP nicht wirksam, wenn die Anforderung von einem Amazon-VPC-Endpunkt kommt. Um die Anforderungen an einen VPC-Endpunkt zu beschränken, verwenden Sie die Bedingungsschlüssel aws:sourceVpce oder aws:sourceVpc. Weitere Informationen finden Sie unter Identity and Access Management für VPC-Endpunkte und VPC-Endpunkt-Services im AWS PrivateLink-Leitfaden.

Sie können diese globalen Bedingungsschlüssel verwenden, um den Zugriff auf AWS KMS keys (KMS-Schlüssel), Aliase und Operationen wie zu steuern, CreateKey die nicht von einer bestimmten Ressource abhängen.

Die folgende Beispiel-Schlüsselrichtlinie erlaubt es einem Benutzer z. B., nur dann kryptografische Operationen mit einem KMS-Schlüssel durchzuführen, wenn die Anforderung den angegebenen VPC-Endpunkt nutzt. Wenn ein Benutzer eine Anforderung an AWS KMS ausgibt, wird die VPC-Endpunkt-ID in der Anforderung mit dem aws:sourceVpce-Bedingungsschlüsselwert in der Richtlinie verglichen. Wenn sie nicht übereinstimmen, wird die Anforderung abgelehnt.

Um eine Richtlinie wie diese zu verwenden, ersetzen Sie die Platzhalter-ID des AWS-Konto und VPC-Endpunkt-IDs durch gültige Werte für Ihr Konto.

{ "Id": "example-key-1", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM policies", "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" } } } ] }

Sie können auch den aws:sourceVpc-Bedingungsschlüssel verwenden, um den Zugriff auf Ihre KMS-Schlüssel anhand der VPC, in der sich der VPC-Endpunkt befindet, zu beschränken.

Die folgende Beispiel-Schlüsselrichtlinie erlaubt nur dann Befehle zur Verwaltung des KMS-Schlüssels, wenn sie von vpc-12345678 stammen. Außerdem erlaubt sie nur Befehle, die den KMS-Schlüssel für kryptographische Operationen verwenden, wenn sie von vpc-2b2b2b2b stammen. Sie verwenden eine solche Richtlinie wie diese möglicherweise, wenn eine Anwendung in einer VPC ausgeführt wird, aber eine zweite, isolierte VPC für die Verwaltungsfunktionen genutzt wird.

Um eine Richtlinie wie diese zu verwenden, ersetzen Sie die Platzhalter-ID des AWS-Konto und VPC-Endpunkt-IDs durch gültige Werte für Ihr Konto.

{ "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": "*", } ] }

Protokollieren des VPC-Endpunkts

AWS CloudTrail protokolliert alle Operationen, die den VPC-Endpunkt verwenden. Wenn eine Anforderung an AWS KMS einen VPC-Endpunkt verwendet, wird die VPC-Endpunkt-ID in dem AWS CloudTrail-Protokoll-Eintrag angezeigt, mit dem die Anforderung aufgezeichnet wird. Sie können mit der Endpunkt-ID die Verwendung Ihres AWS KMS-VPC-Endpunkts überwachen.

Ihre CloudTrail Protokolle enthalten jedoch keine Operationen, die von Prinzipalen in anderen Konten angefordert werden, oder Anforderungen für AWS KMS Operationen an KMS-Schlüsseln und Aliassen in anderen Konten. Um Ihre VPC zu schützen, werden Anforderungen, die von einer VPC-Endpunktrichtlinie verweigert werden, aber ansonsten erlaubt gewesen wären, nicht in AWS CloudTrail erfasst.

Dieser Beispiel-Protokolleintrag zeichnet z. B. eine GenerateDataKey-Anforderung auf, die den VPC-Endpunkt genutzt hat. Das Feld vpcEndpointId erscheint am Ende des Protokolleintrags.

{ "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" }