Wie kann ich meiner Amazon EC2-Instance Zugriff auf einen Amazon S3-Bucket in einem anderen AWS-Konto gewähren?

Lesedauer: 5 Minute
0

Ich möchte eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance verwenden, um in einem anderen Konto auf meinen Amazon Simple Storage Service (Amazon S3)-Bucket zuzugreifen. Wie kann ich diesen Zugriff gewähren, ohne Anmeldeinformationen auf der Instance zu speichern?

Lösung

Hinweis: Die Schritte zur Gewährung von Instance-Zugriff auf einen Amazon S3-Bucket ähneln der Gewährung des Zugriffs auf andere AWS-Ressourcen in einem anderen Konto.

Gehen Sie wie folgt vor, um einer Amazon EC2-Instance in Konto A Zugriff auf einen Bucket in einem anderen Konto (Konto B) zu gewähren.

Erstellen Sie von Konto B aus eine IAM-Rolle

1.    Melden Sie sich mit Konto B bei der AWS-Managementkonsole an.

2.    Öffnen Sie die AWS Identity and Access Management (IAM)-Konsole.

3.    Wählen Sie im Navigationsbereich Rollen.

4.    Wählen Sie Rolle erstellen.

5.    Wählen Sie für Typ der vertrauenswürdigen Entität auswählen die Option Anderes AWS-Konto aus.

6.    Geben Sie als Konto-ID die Konto-ID von Konto A ein.

7.    Wählen Sie Weiter: Genehmigungen.

8.    Fügen Sie der Rolle eine Richtlinie hinzu, die den Zugriff auf Amazon S3 delegiert. Diese Richtlinie gewährt beispielsweise Zugriff für s3:GetObject auf Objekte, die im Bucket gespeichert sind:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
            ]
        }
    ]
}

Hinweis: Sie können die IAM-Richtlinie auf der Grundlage der Amazon S3-Berechtigungen auf Bucketebene und Objektebene ändern, die für Ihren Anwendungsfall erforderlich sind.

9.    Wählen Sie Weiter: Tags hinzufügen.

10.    Sie können der Rolle optionale Tags hinzufügen. Oder Sie lassen die Felder leer und wählen dann Weiter: Bewertung.

11.    Geben Sie unter Rollenname einen Namen für die Rolle ein.

12.    Wählen Sie Rolle erstellen.

Rufen Sie von Konto B den ARN der Rolle ab

1.    Wählen Sie im Navigationsbereich der IAM-Konsole die Option Rollen.

2.    Wählen Sie die IAM-Rolle aus, die Sie erstellt haben.

3.    Notieren Sie sich den Wert, der für Rollen-ARN aufgeführt ist.

Erstellen Sie von Konto A aus eine weitere Rolle (Instanceprofil) und hängen Sie sie an die Instance an

1.    Melden Sie sich mit Konto A bei der AWS-Managementkonsole an.

2.    Öffnen Sie die IAM-Konsole.

3.    Wählen Sie im Navigationsbereich Rollen.

4.    Wählen Sie Rolle erstellen.

5.    Wählen Sie für Typ der vertrauenswürdigen Entität auswählen die Option AWS-Service aus.

6.    Wählen Sie für Auswählen des Dienstes, der diese Rolle verwenden wird die Option EC2.

7.    Wählen Sie Weiter: Genehmigungen.

8.    Wählen Sie Weiter: Tags.

9.    Sie können der Rolle optionale Tags hinzufügen. Oder Sie lassen die Felder leer und wählen dann Weiter: Bewertung.

10.    Geben Sie unter Rollenname einen Namen für die Rolle ein.

11.    Wählen Sie Rolle erstellen.

12.    Wählen Sie aus der Liste der Rollen die Rolle aus, die Sie gerade erstellt haben.

13.    Wählen Sie Inline-Richtlinie hinzufügen und wählen Sie dann die Ansicht JSON.

14.    Geben Sie die folgende Richtlinie ein. Ersetzen Sie arn:aws:iam::111111111111:role/ROLENAME durch den Amazon-Ressourcennamen (ARN) der IAM-Rolle, die Sie in Konto B erstellt haben.

{
	"Version": "2012-10-17",
	"Statement": [{
		"Effect": "Allow",
		"Action": "sts:AssumeRole",
		"Resource": "arn:aws:iam::111111111111:role/ROLENAME"
	}]
}

15.    Wählen Sie Richtlinie überprüfen.

16.    Geben Sie unter Name einen Namen für die Richtlinie ein.

17.    Wählen Sie Richtlinie erstellen.

18.    Hängen Sie die IAM-Rolle (Instance-Profil) an die Amazon EC2-Instance an, die Sie für den Zugriff auf den Amazon S3-Bucket verwenden.

Erstellen Sie in der Amazon EC2-Instance ein Profil für die Rolle in der CLI-Konfigurationsdatei

Hinweis: Wenn Sie SSH und Session Manager verwenden, um eine Verbindung zu Ihren EC2-Instances herzustellen, müssen Sie diese Schritte sowohl für den ec2-Benutzer als auch für den ssm-Benutzer ausführen.

1.    Stellen Sie eine Verbindung zur Amazon EC2-Instance her. Weitere Informationen finden Sie unter Herstellen einer Verbindung zu Ihrer Linux-Instance oder Herstellen einer Verbindung zu Ihrer Windows-Instance.

2.    Nachdem Sie eine Verbindung zur Instance hergestellt haben, überprüfen Sie, ob das Verzeichnis bereits einen Ordner mit dem Namen ~/.aws enthält.

Um den Ordner ~/.aws zu finden, führen Sie den folgenden ls-Befehl aus, um das Verzeichnis aufzulisten:

ls -l ~/.aws

3.    Wenn Sie den Ordner ~/.aws finden, fahren Sie mit dem nächsten Schritt fort. Wenn das Verzeichnis noch keinen ~/.aws-Ordner hat, erstellen Sie den Ordner, indem Sie den Befehl mkdir ausführen:

mkdir ~/.aws/

4.    Verwenden Sie im Ordner ~/.aws einen Texteditor, um eine Datei zu erstellen. Nennen Sie die Datei config.

5.    Geben Sie in der Datei den folgenden Text ein. Ersetzen Sie enterprofilename durch den Namen der Rolle, die Sie der Instance angehängt haben. Ersetzen Sie dann arn:aws:iam::111111111111:role/ROLENAME durch den ARN der Rolle, die Sie in Konto B erstellt haben.

[profile enterprofilename]
role_arn = arn:aws:iam::111111111111:role/ROLENAME

credential_source = Ec2InstanceMetadata

6.    Speichern Sie die Datei.

Stellen Sie sicher, dass das Instance-Profil die Rolle übernehmen kann

Um zu überprüfen, ob die Rolle Ihrer Instance (Instance-Profil) die Rolle in Konto B übernehmen kann, führen Sie den folgenden Befehl aus, während Sie mit der Instance verbunden sind. Ersetzen Sie den Profilnamen durch den Namen der Rolle, die Sie der Instance angehängt haben.

$aws sts get-caller-identity --profile profilename

Der Befehl gibt eine Antwort zurück, die der folgenden ähnelt:

"Account": "11111111111",

"UserId": "AROAEXAMPLEID:sessionName",

"Arn": "arn:aws:sts::111111111111:assumed-role/ROLENAME/sessionName"

Vergewissern Sie sich, dass der Wert für „Arn“ mit dem ARN der Rolle übereinstimmt, die Sie in Konto B erstellt haben.

Überprüfen Sie den Zugriff auf den Amazon S3-Bucket

Um zu überprüfen, ob Ihre Instance auf den Amazon S3-Bucket zugreifen kann, führen Sie diesen Listenbefehl aus, während Sie mit der Instance verbunden sind. Ersetzen Sie den Profilnamen durch den Namen der Rolle, die Sie der Instance angehängt haben.

aws s3 ls s3://DOC-EXAMPLE-BUCKET --profile profilename

Wenn Ihre Instance erfolgreich auf den Bucket zugreifen kann, erhalten Sie eine Antwort, die den Inhalt des Buckets auflistet, wie zum Beispiel diese:

PRE Hello/
2018-08-15 16:16:51 89 index.html

Ähnliche Informationen

IAM-Tutorial: Delegieren Sie den Zugriff über AWS-Konten mithilfe von IAM-Rollen

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren