Sie können den Zugriff auf einen Amazon S3-Bucket mit einer der folgenden Methoden einrichten:
Unterstützte Regionen
Storage Transfer Service kann Daten aus den folgenden Amazon S3-Regionen übertragen:af-south-1
, ap-east-1
, ap-northeast-1
,
ap-northeast-2
, ap-northeast-3
, ap-south-1
,
ap-south-2
, ap-southeast-1
, ap-southeast-2
,
ap-southeast-3
, ca-central-1
, eu-central-1
,
eu-central-2
, eu-north-1
, eu-south-1
,
eu-south-2
, eu-west-1
, {2/., {2/.}, {2/.}, {2/.}, {2/., {2/.}, {2/.}, {2/.}, {2/.}, {2/.}, {2/.},
eu-west-3
,
eu-west-2
me-central-1
me-south-1
sa-east-1
us-east-1
us-east-2
us-west-1
us-west-2
Erforderliche Berechtigungen
Wenn Sie Storage Transfer Service verwenden möchten, um Daten aus einem Amazon S3-Bucket zu verschieben, muss Ihr Nutzerkonto oder Ihre Rolle für die föderierte Identität die entsprechenden Berechtigungen für den Bucket haben:
Berechtigung | Beschreibung | Nutzung |
---|---|---|
s3:ListBucket |
Ermöglicht Storage Transfer Service, Objekte im Bucket aufzulisten. | Immer erforderlich. |
s3:GetObject |
Ermöglicht Storage Transfer Service, Objekte im Bucket zu lesen. | Erforderlich, wenn Sie die aktuelle Version aller Objekte übertragen Verwenden Sie s3:GetObjectVersion , wenn Ihr Manifest eine Objektversion angibt. |
s3:GetObjectVersion |
Ermöglicht Storage Transfer Service, bestimmte Versionen von Objekten im Bucket zu lesen. | Erforderlich, wenn das Manifest eine Objektversion angibt Verwenden Sie andernfalls s3:GetObject . |
s3:DeleteObject |
Ermöglicht es Storage Transfer Service, Objekte im Bucket zu löschen. | Erforderlich, wenn Sie deleteObjectsFromSourceAfterTransfer auf true festlegen. |
Mit Anmeldedaten authentifizieren
So verwenden Sie eine Zugriffsschlüssel-ID und einen geheimen Schlüssel zur Authentifizierung bei AWS:
Erstellen Sie einen AWS IAM-Nutzer (AWS Identity and Access Management) mit einem Namen, den Sie leicht wiedererkennen, z. B.
transfer-user
.Wählen Sie für den AWS-Zugriffstyp Zugriffsschlüssel – Programmatischer Zugriff aus.
Weisen Sie dem Nutzer eine der folgenden Rollen zu:
- AmazonS3ReadOnlyAccess, um schreibgeschützten Zugriff auf die Quelle bereitzustellen. Dies ermöglicht Übertragungen, das Löschen von Objekten an der Quelle nach Abschluss der Übertragung wird jedoch nicht unterstützt.
- AmazonS3FullAccess, wenn die Übertragung so konfiguriert ist, dass Objekte in der Quelle gelöscht werden.
Eine benutzerdefinierte Rolle mit den entsprechenden Berechtigungen aus der Tabelle Erforderliche Berechtigungen oben. Der JSON-Code für die Mindestberechtigungen sieht wie im folgenden Beispiel aus:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::AWS_BUCKET_NAME/*", "arn:aws:s3:::AWS_BUCKET_NAME" ] } ] }
Notieren Sie sich die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel, wenn der Nutzer erfolgreich erstellt wurde.
Wie Sie die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel an den Storage Transfer Service übergeben, hängt von der Schnittstelle ab, die Sie zum Initiieren der Übertragung verwenden.
Cloud Console
Geben Sie die Werte direkt in das Formular zum Erstellen von Übertragungsjobs ein.
Informationen zum Einstieg finden Sie unter Übertragungen erstellen.
gcloud-CLI
Erstellen Sie eine JSON-Datei im folgenden Format:
{
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
Übergeben Sie den Speicherort der Datei mit dem Flag source-creds-file
an den Befehl gcloud transfer jobs create
:
gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
--source-creds-file=PATH/TO/KEYFILE.JSON
REST API
Das transferSpec
-Objekt muss die Schlüsselinformationen als Teil des awsS3DataSource
-Objekts enthalten:
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"awsAccessKey": {
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
},
"gcsDataSink": {
"bucketName": "GCS_SINK_NAME"
}
}
Clientbibliotheken
Siehe die Beispiele auf der Seite Übertragungen erstellen.
Anmeldedaten in Secret Manager speichern
Secret Manager ist ein sicherer Dienst, der sensible Daten wie Passwörter speichert und verwaltet. Es verwendet eine starke Verschlüsselung, rollenbasierte Zugriffssteuerung und Audit-Logging, um Ihre Secrets zu schützen.
Storage Transfer Service kann Secret Manager nutzen, um Ihre AWS-Zugangsdaten zu schützen. Sie laden Ihre Anmeldedaten in Secret Manager und übergeben dann den Namen der Secret-Ressource an den Storage Transfer Service.
API aktivieren
Secret Manager API aktivieren.
Zusätzliche Berechtigungen konfigurieren
Nutzerberechtigungen
Der Nutzer, der das Secret erstellt, benötigt die folgende Rolle:
- Secret Manager-Administrator (
roles/secretmanager.admin
)
Dienst-Agent-Berechtigungen
Für den Storage Transfer Service-Dienst-Agent ist die folgende IAM-Rolle erforderlich:
- Zugriffsfunktion für Secret Manager-Secret (
roles/secretmanager.secretAccessor
)
So weisen Sie Ihrem Dienst-Agent die Rolle zu:
Cloud Console
Folgen Sie der Anleitung zum Abrufen der E-Mail-Adresse des Dienst-Agents.
Rufen Sie in der Google Cloud Console die Seite IAM auf.
Klicken Sie auf Zugriff erlauben.
Geben Sie im Textfeld Neue Hauptkonten die E-Mail-Adresse des Dienst-Agents ein.
Wählen Sie im Drop-down-Menü Rolle auswählen die Option Zugriffsfunktion für Secret Manager-Secret aus.
Klicken Sie auf Speichern.
gcloud
Verwenden Sie den Befehl gcloud projects add-iam-policy-binding
, um dem Dienst-Agent die IAM-Rolle hinzuzufügen.
Folgen Sie der Anleitung zum Abrufen der E-Mail-Adresse des Dienst-Agents.
Geben Sie in der Befehlszeile den folgenden Befehl ein:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:SERVICE_AGENT_EMAIL' \ --role='roles/secretmanager.secretAccessor'
Secret erstellen
Erstellen Sie ein Secret mit Secret Manager:
Cloud Console
Rufen Sie in der Google Cloud Console die Seite Secret Manager auf.
Klicken Sie auf Secret erstellen.
Geben Sie einen Namen ein.
Geben Sie im Textfeld Secret-Wert Ihre Anmeldedaten im folgenden Format ein:
{ "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" }
Klicken Sie auf Secret erstellen.
Nachdem das Secret erstellt wurde, notieren Sie sich den vollständigen Ressourcennamen des Secrets:
Wähle den Tab Übersicht aus.
Kopieren Sie den Wert von Ressourcen-ID. Sie hat folgendes Format:
projects/1234567890/secrets/SECRET_NAME
gcloud
Um mit dem gcloud-Befehlszeilentool ein neues Secret zu erstellen, übergeben Sie die JSON-formatierten Anmeldedaten an den Befehl gcloud secrets create
:
printf '{
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}' | gcloud secrets create SECRET_NAME --data-file=-
Rufen Sie den vollständigen Ressourcennamen des Secrets ab:
gcloud secrets describe SECRET_NAME
Achten Sie auf den Wert von name
in der Antwort. Sie hat folgendes Format:
projects/1234567890/secrets/SECRET_NAME
Weitere Informationen zum Erstellen und Verwalten von Secrets finden Sie in der Dokumentation zu Secret Manager.
Secret an den Befehl zur Joberstellung übergeben
Wenn Sie Secret Manager mit Storage Transfer Service verwenden, müssen Sie zum Erstellen eines Übertragungsjobs die REST API verwenden.
Übergeben Sie den Secret Manager-Ressourcennamen als Wert des Felds transferSpec.awsS3DataSource.credentialsSecret
:
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
"description": "Transfer with Secret Manager",
"status": "ENABLED",
"projectId": "PROJECT_ID",
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_BUCKET_NAME",
"credentialsSecret": "SECRET_RESOURCE_ID",
},
"gcsDataSink": {
"bucketName": "CLOUD_STORAGE_BUCKET_NAME"
}
}
}
Mit föderierter Identität authentifizieren
So verwenden Sie die föderierte Identität für die Authentifizierung bei AWS:
Erstellen Sie eine neue IAM-Rolle in AWS.
Wählen Sie Benutzerdefinierte Vertrauensrichtlinie als vertrauenswürdigen Entitätstyp aus.
Kopieren Sie die folgende Vertrauensrichtlinie und fügen Sie sie ein:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "accounts.google.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:sub": "SUBJECT_ID" } } } ] }
Ersetzen Sie SUBJECT_ID durch den
subjectID
des von Google verwalteten Dienstkontos, das automatisch erstellt wird, wenn Sie Storage Transfer Service verwenden. So rufen Sie densubjectID
ab:Rufen Sie die Referenzseite für
googleServiceAccounts.get
auf.Es wird ein interaktives Steuerfeld mit dem Titel Diese Methode testen geöffnet.
Geben Sie im Steuerfeld unter Anfrageparameter Ihre Projekt-ID ein. Das hier angegebene Projekt muss das Projekt sein, das Sie zur Verwaltung von Storage Transfer Service verwenden.
Klicken Sie auf Execute.
subjectId
ist in der Antwort enthalten.
Weisen Sie der Rolle eine der folgenden Berechtigungsrichtlinien zu:
- AmazonS3ReadOnlyAccess bietet Lesezugriff auf die Quelle. Dies ermöglicht Übertragungen, das Löschen von Objekten an der Quelle nach Abschluss der Übertragung wird jedoch nicht unterstützt.
- AmazonS3FullAccess, wenn die Übertragung so konfiguriert ist, dass Objekte in der Quelle gelöscht werden.
Eine benutzerdefinierte Rolle mit den entsprechenden Berechtigungen aus der Tabelle Erforderliche Berechtigungen oben. Der JSON-Code für die Mindestberechtigungen sieht wie im folgenden Beispiel aus:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::AWS_BUCKET_NAME/*", "arn:aws:s3:::AWS_BUCKET_NAME" ] } ] }
Weisen Sie der Rolle einen Namen zu und erstellen Sie die Rolle.
Rufen Sie nach der Erstellung die Rollendetails auf, um den Amazon Resource Name (ARN) abzurufen. Notieren Sie sich diesen Wert. Er hat das Format
arn:aws:iam::AWS_ACCOUNT:role/ROLE_NAME
.
Wie Sie den ARN an den Storage Transfer Service übergeben, hängt von der Schnittstelle ab, mit der Sie die Übertragung initiieren.
Cloud Console
Geben Sie den ARN direkt in das Formular zum Erstellen von Übertragungsjobs ein.
Informationen zum Einstieg finden Sie unter Übertragungen erstellen.
gcloud-CLI
Erstellen Sie eine JSON-Datei im folgenden Format:
{
"roleArn": "ARN"
}
Übergeben Sie den Speicherort der Datei mit dem Flag source-creds-file
an den Befehl gcloud transfer jobs create
:
gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
--source-creds-file=PATH/TO/ARNFILE.JSON
REST API
Das transferSpec
-Objekt muss die ARN-Informationen als Teil des awsS3DataSource
-Objekts enthalten:
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"roleArn": "ARN"
},
"gcsDataSink": {
"bucketName": "GCS_SINK_NAME"
}
}
Clientbibliotheken
Siehe die Beispiele auf der Seite Übertragungen erstellen.
IP-Einschränkungen
Wenn in Ihrem AWS-Projekt IP-Einschränkungen für den Zugriff auf den Speicher verwendet werden, müssen Sie der Liste der zulässigen IP-Adressen die von Storage Transfer Service-Workern verwendeten IP-Bereiche hinzufügen.
Da sich diese IP-Bereiche ändern können, veröffentlichen wir die aktuellen Werte als JSON-Datei unter einer permanenten Adresse:
https://www.gstatic.com/storage-transfer-service/ipranges.json
Wenn der Datei ein neuer Bereich hinzugefügt wird, warten wir mindestens sieben Tage, bevor wir diesen Bereich für Anfragen vom Storage Transfer Service verwenden.
Wir empfehlen, Daten aus diesem Dokument mindestens einmal wöchentlich abzurufen, um Ihre Sicherheitskonfiguration auf dem neuesten Stand zu halten. Ein Python-Beispielskript, mit dem IP-Bereiche aus einer JSON-Datei abgerufen werden, finden Sie in diesem Artikel der Virtual Private Cloud-Dokumentation.
Verwenden Sie das Feld Condition
in einer Bucket-Richtlinie, wie in der AWS S3-Dokumentation unter Zugriff anhand bestimmter IP-Adressen verwalten beschrieben, um diese Bereiche als zulässige IP-Adressen hinzuzufügen.