Wie konfiguriere ich meinen AWS Transfer Family-Server für die Verwendung eines Amazon-S3-Buckets, der sich in einem anderen AWS-Konto befindet?
Ich möchte, dass mein AWS Transfer Family-Server in Konto A auf einen Amazon Simple Storage Service (Amazon S3)-Bucket in einem anderen Konto, d. h. Konto B zugreift. Ich möchte meinen Server mit kontoübergreifendem Zugriff auf den Bucket einrichten.
Kurzbeschreibung
Gehen Sie wie folgt vor:
- Erstellen Sie eine AWS Identity and Access Management (IAM)-Rolle in Konto A mit Zugriff auf den Bucket.
- Aktualisieren Sie die Bucket-Richtlinie, um der IAM-Rolle in Konto B kontoübergreifenden Zugriff zu gewähren.
- Erstellen Sie einen Transfer-Family-Serverbenutzer, der mit der IAM-Rolle in Konto A konfiguriert ist.
- Überprüfen Sie, ob Ihr Transfer-Family-Serverbenutzer in Konto A auf den S3-Bucket in Konto B zugreifen kann.
- (Optional) Setzen Sie die S3-Objekteigentümerschaft auf den in Konto B bevorzugten Bucket-Eigentümer.
Hinweis: Die AWS Transfer-Family-Konsole zeigt nur die Amazon S3-Buckets desselben Kontos an. Um Ihren Transfer-Family-Server mit einem Bucket in einem anderen Konto zu verwenden, müssen Sie die AWS-Befehlszeilenschnittstelle (AWS CLI) oder ein AWS-SDK verwenden.
Behebung
Erstellen einer IAM-Rolle in Konto A mit Zugriff auf den Bucket
Erstellen Sie eine IAM-Rolle für Ihre Serverbenutzer. Verwenden Sie für die IAM-Richtlinie der Rolle Folgendes:
Hinweis: Ersetzen Sie destination-DOC-EXAMPLE-BUCKET durch den Namen des S3-Buckets, auf den Ihr Server zugreifen soll.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingBucketReadandWriteandDelete", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET/*", "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET" ] } ] }
Hinweis: Die Transfer-Familie benötigt die s3:PutObjectAcl-Berechtigung, um kontoübergreifende S3-Uploads durchzuführen.
Nachdem Sie die IAM-Rolle erstellt haben, rufen Sie die Rollen-ID ab, indem Sie den Befehlget-role ausführen, ähnlich wie im Folgenden beschrieben:
$ aws iam get-role --role-name "ROLE_NAME"
Sie benötigen die Rollen-ID für den nächsten Schritt.
Aktualisieren Sie die Bucket-Richtlinie, um der IAM-Rolle in Konto B kontoübergreifenden Zugriff zu gewähren
Ändern Sie die Richtlinie des Ziel-Buckets, um der von Ihnen erstellten IAM-Rolle Zugriff zu gewähren. Sie können eine Bucket-Richtlinie wie die folgende verwenden:
Hinweis: Ersetzen Sie arn:aws:iam::123456789012:root durch den Amazon-Ressourcennamen (ARN) des Kontos, zu dem Ihr Server gehört. Ersetzen Sie destination-doc-example-bucket durch den Namen des Buckets. Ersetzen Sie AROA1234567890 durch die Rollen-ID der von Ihnen erstellten IAM-Rolle.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "BucketPolicyForTransferFamily", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET", "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET/*" ], "Condition": { "StringLike": { "aws:userId": "AROA1234567890:*" } } } ] }
Das Element „Bedingung“ in dieser Beispielrichtlinie ist optional. Fügen Sie das Element Bedingung ein, um den Zugriff auf den Bereich nur der von Ihnen angegebenen IAM-Rolle zu gewähren. Oder entfernen Sie das Element, um allen IAM-Rollen und Benutzern des Kontos, zu dem Ihr Server gehört, Zugriff zu gewähren.
Erstellen Sie einen Transfer-Family-Serverbenutzer, der mit der IAM-Rolle in Konto A konfiguriert ist
1.Generieren Sie SSH-Schlüssel für Ihren Transfer-Family-Server.
2.Ermitteln Sie die Server-IDIhres Servers.
3.Führen Sie den Befehlcreate-user über die AWS-CLI aus. Geben Sie für --server-id die ID Ihres Servers ein. Geben Sie für --role den ARN der IAM-Rolle ein, die Sie erstellt haben. Geben Sie für --ssh-public-key-body den Inhalt der .pub-Datei ein, die Sie beim Erstellen der SSH-Schlüssel generiert haben.
$ aws transfer create-user --user-name "MY_SERVER_USER_NAME" --server-id "MY_SERVER_ID" --role "MY_IAM_ROLE_ARN" --home-directory "/destination-DOC-EXAMPLE-BUCKET/MY_SERVER_USER_NAME" --ssh-public-key-body "CONTENTS_OF_MY_SSH_.PUB_FILE"
Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten,stellen Sie sicher, dass Sie die neueste Version der AWS-CLI verwenden.
Der Befehl gibt die Server-ID und den von Ihnen erstellten Benutzer zurück:
{ "ServerId": "MY_SERVER_ID", "UserName": "MY_SERVER_USER_NAME" }
Wichtig: Um den Zugriff des Serverbenutzers nur auf sein Home-Verzeichnis zu beschränken,erstellen Sie in IAM eine Scope-Down-Richtlinie. Bearbeiten Sie dann die Eigenschaften des Serverbenutzers, um die von Ihnen erstellte Richtlinie zur Einschränkung des Umfangs anzuwenden.
Überprüfen Sie, ob Ihr Transfer-Family-Serverbenutzer in Konto A auf den Bucket in Konto B zugreifen kann
1.Verbinden Sie sich mit Ihrem Server als der von Ihnen erstellte Benutzer. Dieser OpenSSH-Befehl stellt beispielsweise eine Verbindung zu einem SFTP-Server her:
$ sftp -i myserveruser MY_SERVER_USER_NAME@MY_SERVER_ID.server.transfer.us-east-1.amazonaws.com
2.Geben Sie testweise das Home-Verzeichnis des Buckets an. Wenn Sie OpenSSH verwenden, führen Sie diesen Befehl aus:
$ ls
Wenn der Befehl das Home-Verzeichnis zurückgibt, dann hat Ihr Serverbenutzer kontoübergreifenden Zugriff auf den Bucket.
(Optional) Setzen Sie die S3-Objekteigentümerschaft auf den in Konto B bevorzugten Bucket-Eigentümer
Standardmäßig ist ein Amazon-S3-Objekt Eigentum des AWS-Kontos, welches das Objekt hochgeladen hat. Das bedeutet, dass die in den Ziel-Bucket hochgeladenen Objekte standardmäßig dem Konto des Quell-Servers gehören.
Um das Zielkonto so zu aktivieren, dass es automatisch Eigentümer von Objekten aus kontoübergreifenden Uploads wird, setzen Sie die S3-Objekteigentümerschaft des Ziel-Buckets auf Bucket-Eigentümer bevorzugt. Nachdem Sie das getan haben, gehören alle neuen Objekte, die über den AWS-Transfer-Family-Server hochgeladen werden, automatisch dem Konto des Ziel-Buckets.
Weitere Informationen
CreateUser (AWS-Transfer-Family-Benutzerhandbuch)
Hinzufügen eines Benutzers (AWS-Transfer-Family-Benutzerhandbuch)
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 3 Jahren