Verketten von IAM-Rollen in Amazon Neptune - Amazon Neptune

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.

Verketten von IAM-Rollen in Amazon Neptune

Wichtig

Das in Engine-Version 1.2.1.0.R3 eingeführte neue kontoübergreifende Massenlade-Feature, das die Vorteile der IAM-Rollen-Verkettung nutzt, kann in einigen Fällen zu einer Verschlechterung der Massenlade-Leistung führen. Daher wurden Upgrades auf Engine-Versionen, die dieses Feature unterstützen, vorübergehend ausgesetzt, bis dieses Problem behoben ist.

Wenn Sie Ihrem Cluster eine Rolle anfügen, kann Ihr Cluster diese Rolle annehmen, um auf in Amazon S3 gespeicherte Daten zuzugreifen. Wenn diese Rolle nicht auf alle benötigten Ressourcen zugreifen kann, können Sie ab Engine-Version 1.2.1.0.R3 eine oder mehrere zusätzliche Rollen verketten, die Ihr Cluster annehmen kann, um Zugriff auf andere Ressourcen zu erhalten. Jede Rolle in der Kette nimmt die nächste Rolle in der Kette an, bis Ihr Cluster die Rolle am Ende der Kette angenommen hat.

Zum Verketten von Rollen richten Sie eine Vertrauensstellung zwischen den Rollen ein. Um beispielsweise RoleB mit RoleA zu verketten, muss RoleA eine Berechtigungsrichtlinie für die Annahme von RoleB besitzen. RoleB muss eine Vertrauensrichtlinie besitzen, die die Übergabe der Berechtigungen zurück an RoleA ermöglicht. Weitere Informationen finden Sie unter Verwenden von IAM-Rollen.

Die erste Rolle in einer Kette muss eine dem Cluster angefügte Rolle sein, die Daten lädt.

Die erste und jede folgende Rolle, die die folgende Rolle in der Kette annimmt, muss Folgendes besitzen:

  • Eine Richtlinie, die eine spezifische Aussage zum Allow-Effekt auf die Aktion sts:AssumeRole enthält.

  • Der Amazon-Ressourcenname (ARN) der nächsten Rolle in einem Resource-Element

Anmerkung

Der Amazon S3 S3-Ziel-Bucket muss sich in derselben AWS Region wie der Cluster befinden.

Kontoübergreifender Zugriff mithilfe von Rollen

Sie können einen kontoübergreifenden Zugriff gewähren, indem Sie eine oder mehrere Rollen verketten, die zu einem anderen Konto gehören. Wenn Ihr Cluster vorübergehend eine Rolle annimmt, die zu einem anderen Konto gehört, kann er Zugriff auf die Ressourcen in diesem Konto erhalten.

Angenommen, Konto A möchte auf Daten in einem Amazon-S3-Bucket zugreifen, der zu Konto B gehört:

  • Konto A erstellt eine benannte AWS Servicerolle für Neptune RoleA und ordnet sie einem Cluster zu.

  • Konto B erstellt eine Rolle mit dem Namen RoleB, die zum Zugriff auf die Daten in einem Bucket in Konto B berechtigt ist.

  • Konto A fügt eine Berechtigungsrichtlinie an RoleA an, um RoleB anzunehmen.

  • Konto B fügt eine Vertrauensrichtlinie an RoleB an, um die Rückgabe der Berechtigungen an RoleA zu ermöglichen.

  • Um auf die Daten im Bucket von Konto B zuzugreifen, führt Konto A einen Loader-Befehl mit dem Parameter iamRoleArn aus, der RoleA und RoleB verkettet. Für die Dauer der Loader-Operation nimmt RoleA vorübergehend RoleB an, um auf den Amazon-S3-Bucket in Konto B zuzugreifen.

Diagramm, das den kontoübergreifenden Zugriff mithilfe verketteter Rollen zeigt

Beispielsweise würde RoleA eine Vertrauensrichtlinie besitzen, die eine Vertrauensstellung mit Neptune einrichtet:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

RoleA würde auch eine Berechtigungsrichtlinie besitzen, die die Annahme von RoleB im Besitz von Konto B ermöglicht:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1487639602000", "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::(Account B ID):role/RoleB" } ] }

Umgekehrt würde RoleB eine Vertrauensrichtlinie für die Einrichtung einer Vertrauensstellung mit RoleA besitzen:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::(Account A ID):role/RoleA" } } ] }

RoleB würde auch eine Berechtigung für den Zugriff auf Daten in dem Amazon-S3-Bucket benötigen, der sich in Konto B befindet.

Einen AWS Security Token Service (STS-) VPC-Endpunkt erstellen

Der Neptune-Loader benötigt einen AWS STS VPC-Endpunkt für die Verkettung von IAM-Rollen für den privaten Zugriff über AWS STS APIs private IP-Adressen. Sie können auf sichere und skalierbare Weise eine direkte Verbindung von einer Amazon-VPC zu AWS STS einem VPC-Endpunkt herstellen. Wenn Sie einen Schnittstellen-VPC-Endpunkt verwenden, wird die Sicherheitslage verbessert, da Sie keine Firewalls für den ausgehenden Datenverkehr öffnen müssen. Sie erhalten außerdem die übrigen Vorteile der Verwendung von Amazon-VPC-Endpunkten.

Bei Verwendung eines VPC-Endpunkts wird der Datenverkehr AWS STS nicht über das Internet übertragen und verlässt niemals das Amazon-Netzwerk. Ihre VPC ist sicher verbunden, AWS STS ohne dass Verfügbarkeitsrisiken oder Bandbreitenbeschränkungen für Ihren Netzwerkverkehr auftreten. Weitere Informationen finden Sie unter Verwenden von AWS STS -Schnittstellen-VPC-Endpunkten.

Um den Zugriff für AWS Security Token Service (STS) einzurichten
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon VPC-Konsole unter https://console.aws.amazon.com/vpc/.

  2. Wählen Sie im Navigationsbereich Endpunkte aus.

  3. Klicken Sie auf Endpunkt erstellen.

  4. Wählen Sie den Servicenamen aus: com.amazonaws.region.sts für den Endpunkt vom Typ Schnittstelle.

  5. Wählen Sie die VPC aus, die Ihre Neptune-DB-Instance und -Instance enthält. EC2

  6. Aktivieren Sie das Kontrollkästchen neben dem Subnetz, in dem sich Ihre EC2 Instance befindet. Sie können nicht mehrere Subnetze aus derselben Availability Zone auswählen.

  7. Wählen Sie für IP address type (IP-Adressentyp) eine der folgenden Optionen aus:

    • IPv4— Weisen Sie Ihren Endpunkt-Netzwerkschnittstellen IPv4 Adressen zu. Diese Option wird nur unterstützt, wenn alle ausgewählten Subnetze IPv4 Adressbereiche haben.

    • IPv6— Weisen Sie Ihren Endpunkt-Netzwerkschnittstellen IPv6 Adressen zu. Diese Option wird nur unterstützt, wenn es sich bei allen ausgewählten Subnetzen um reine IPv6 Subnetze handelt.

    • Dualstack — Weisen Sie Ihren Endpunkt-Netzwerkschnittstellen IPv4 sowohl IPv6 Adressen als auch Adressen zu. Diese Option wird nur unterstützt, wenn alle ausgewählten Subnetze IPv4 sowohl IPv6 als auch Adressbereiche haben.

  8. Wählen Sie für Sicherheitsgruppen die Sicherheitsgruppen aus, die den Endpunkt-Netzwerkschnittstellen für den VPC-Endpunkt zugeordnet werden sollen. Sie müssten alle Sicherheitsgruppen auswählen, die an Ihre Neptune-DB-Instance und EC2 -Instance angehängt sind.

  9. Wählen Sie für Policy (Richtlinie) Full access (Vollzugriff), um alle Operationen aller Prinzipale auf allen Ressourcen über den VPC-Endpunkt zuzulassen. Wählen Sie andernfalls Custom (Benutzerdefiniert), um eine VPC-Endpunktrichtlinie anzufügen, die die Berechtigungen steuert, die Prinzipale zum Ausführen von Aktionen für Ressourcen über den VPC-Endpunkt haben. Diese Option ist nur verfügbar, wenn der Service VPC-Endpunktrichtlinien unterstützt. Weitere Informationen finden Sie unter Endpunktrichtlinien.

  10. (Optional) Sie fügen ein Tag hinzu, indem Sie Neuen Tag hinzufügen auswählen und Schlüssel und Wert für das Tag eingeben.

  11. Wählen Sie Endpunkt erstellen aus.

Informationen zum Erstellen von Endpunkten finden Sie unter VPC-Endpunkte im Amazon-VPC-Benutzerhandbuch. Bitte beachten Sie, dass Amazon-STS-VPC-Endpunkte eine Voraussetzung für die Verkettung von IAM-Rollen sind.

Nachdem Sie nun Zugriff auf den AWS STS Endpunkt gewährt haben, können Sie sich darauf vorbereiten, Daten zu laden. Weitere Informationen zu unterstützten Formaten finden Sie unter Ladedatenformate.

Verkettung von Rollen innerhalb eines Loader-Befehls

Sie können die Rollenverkettung angeben, wenn Sie einen Loader-Befehl ausführen, indem Sie eine durch Kommas getrennte Rollenliste ARNs in den Parameter aufnehmen. iamRoleArn

Obwohl Sie in der Regel nur zwei Rollen in einer Kette benötigen, ist es durchaus möglich, drei oder mehr Rollen zu verketten. Dieser Loader-Befehl verkettet beispielsweise drei Rollen:

curl -X POST https://localhost:8182/loader \ -H 'Content-Type: application/json' \ -d '{ "source" : "s3://(the target bucket name)/(the target date file name)", "iamRoleArn" : "arn:aws:iam::(Account A ID):role/(RoleA),arn:aws:iam::(Account B ID):role/(RoleB),arn:aws:iam::(Account C ID):role/(RoleC)", "format" : "csv", "region" : "us-east-1" }'