Puoi configurare l'accesso a un bucket Amazon S3 utilizzando uno dei due metodi seguenti:
Aree geografiche supportate
Storage Transfer Service è in grado di trasferire i dati dalle seguenti regioni Amazon S3: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
, eu-west-2
, eu-west-3
,
me-central-1
, me-south-1
, sa-east-1
, us-east-1
,
us-east-2
, us-west-1
, us-west-2
.
Autorizzazioni obbligatorie
Per utilizzare Storage Transfer Service per spostare i dati da un Amazon S3 bucket, il tuo account utente o il ruolo di identità federata deve disporre dell'appropriata autorizzazioni per il bucket:
Autorizzazione | Descrizione | Utilizza |
---|---|---|
s3:ListBucket |
Consente a Storage Transfer Service di elencare gli oggetti nel bucket. | Sempre obbligatoria. |
s3:GetObject |
Consente a Storage Transfer Service di leggere gli oggetti nel bucket. | Obbligatorio se stai trasferendo la versione corrente di tutti gli oggetti. Se il file manifest specifica una versione dell'oggetto, utilizza invece s3:GetObjectVersion . |
s3:GetObjectVersion |
Consente a Storage Transfer Service di leggere versioni specifiche degli oggetti nel bucket. | Obbligatorio se il manifest specifica una versione dell'oggetto. Altrimenti, usa s3:GetObject . |
s3:DeleteObject |
Consente a Storage Transfer Service di eliminare gli oggetti nel bucket. | Obbligatorio se imposti deleteObjectsFromSourceAfterTransfer su true . |
Esegui l'autenticazione utilizzando le credenziali di accesso
Per utilizzare un ID chiave di accesso e una chiave segreta per l'autenticazione su AWS:
Crea un utente AWS Identity and Access Management (AWS IAM) con un nome che si facilmente riconoscibile, come
transfer-user
.Per il tipo di accesso AWS, seleziona Chiave di accesso - Accesso programmatico.
Concedi all'utente uno dei seguenti ruoli:
- AmazonS3ReadOnlyAccess per fornire l'accesso di sola lettura all'origine. In questo modo è possibile effettuare i trasferimenti, ma non è supportata l'eliminazione di oggetti all'origine. una volta completato il trasferimento.
- AmazonS3FullAccess se il trasferimento è configurato per eliminare oggetti alla fonte.
Un ruolo personalizzato con le autorizzazioni appropriate Tabella Autorizzazioni obbligatorie riportata sopra. Il file JSON per le autorizzazioni minime sono simili all'esempio seguente:
{ "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" ] } ] }
Prendi nota dell'ID della chiave di accesso e della chiave di accesso segreta quando l'utente creato correttamente.
Come trasmetti l'ID della chiave di accesso e la chiave di accesso segreta a Storage Transfer Service dipende dall'interfaccia che utilizzi per avviare il trasferimento.
console Cloud
Inserisci i valori direttamente nel modulo di creazione del job di trasferimento.
Consulta Creare trasferimenti per visualizzare a iniziare.
Interfaccia a riga di comando gcloud
Crea un file JSON con il seguente formato:
{
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
Passa la posizione del file al comando gcloud transfer jobs create
con il flag source-creds-file
:
gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
--source-creds-file=PATH/TO/KEYFILE.JSON
API REST
L'oggetto transferSpec
deve contenere le informazioni chiave come parte di
l'oggetto awsS3DataSource
:
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"awsAccessKey": {
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
},
"gcsDataSink": {
"bucketName": "GCS_SINK_NAME"
}
}
Librerie client
Esamina gli esempi nel Pagina Crea trasferimenti.
Salva le tue credenziali di accesso in Secret Manager
Secret Manager è un servizio sicuro che archivia e gestisce dati sensibili come password. Utilizza una crittografia avanzata, l'accesso basato sui ruoli e audit logging per proteggere i tuoi secret.
Storage Transfer Service può sfruttare Secret Manager per proteggere i tuoi AWS credenziali di accesso. Carica le tue credenziali in Secret Manager, quindi passa il nome della risorsa secret a Storage Transfer Service.
Abilita l'API
Enable the Secret Manager API.
Configura autorizzazioni aggiuntive
Autorizzazioni utente
L'utente che crea il secret richiede il seguente ruolo:
- Amministratore Secret Manager (
roles/secretmanager.admin
)
Scopri come concedere un ruolo.
Autorizzazioni agente di servizio
L'agente di servizio Storage Transfer Service richiede il seguente ruolo IAM:
- Funzione di accesso ai secret di Secret Manager (
roles/secretmanager.secretAccessor
)
Per concedere il ruolo all'agente di servizio:
console Cloud
Segui le istruzioni per recuperare l'email dell'agente di servizio.
Vai alla pagina IAM nella console Google Cloud.
Fai clic su Concedi accesso.
Nella casella di testo Nuove entità, inserisci l'email dell'agente di servizio.
Nel menu a discesa Seleziona un ruolo, cerca e seleziona Secret Manager Funzione di accesso ai secret.
Fai clic su Salva.
gcloud
Utilizza il comando gcloud projects add-iam-policy-binding
per aggiungere il ruolo IAM
di servizio all'agente di servizio.
Segui le istruzioni per recuperare l'email dell'agente di servizio.
Dalla riga di comando, inserisci questo comando:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:SERVICE_AGENT_EMAIL' \ --role='roles/secretmanager.secretAccessor'
Crea un secret
Crea un secret con Secret Manager:
console Cloud
Vai alla pagina Secret Manager nella console Google Cloud.
Fai clic su Crea secret.
Inserisci un nome.
Nella casella di testo Valore secret, inserisci le tue credenziali nel seguente formato:
{ "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" }
Fai clic su Crea secret.
Una volta creato il secret, prendi nota del nome completo della risorsa:
Seleziona la scheda Panoramica.
Copia il valore dell'ID risorsa. Utilizza il seguente formato:
projects/1234567890/secrets/SECRET_NAME
gcloud
Per creare un nuovo secret utilizzando lo strumento a riga di comando gcloud, passa il metodo
Credenziali in formato JSON al comando gcloud secrets create
:
printf '{
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}' | gcloud secrets create SECRET_NAME --data-file=-
Recupera il nome completo della risorsa del secret:
gcloud secrets describe SECRET_NAME
Prendi nota del valore di name
nella risposta. Utilizza il seguente formato:
projects/1234567890/secrets/SECRET_NAME
Per maggiori dettagli sulla creazione e la gestione dei secret, consulta Documentazione di Secret Manager.
Passa il tuo secret al comando di creazione del job
Utilizzo di Secret Manager con Storage Transfer Service richiede l'uso dell'API REST per creare un job di trasferimento.
Passa il nome della risorsa Secret Manager come valore del valore
Campo 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"
}
}
}
Autenticazione tramite identità federata
Per utilizzare l'identità federata per l'autenticazione su AWS:
Crea un nuovo ruolo IAM in AWS.
Seleziona Criterio di attendibilità personalizzato come tipo di entità attendibile.
Copia e incolla il seguente criterio di attendibilità:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "accounts.google.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:sub": "SUBJECT_ID" } } } ] }
Sostituisci SUBJECT_ID con la colonna
subjectID
gestita da Google creato automaticamente quando inizi a utilizzare Storage Transfer Service. Per recuperaresubjectID
:Vai alla sezione Pagina di riferimento
googleServiceAccounts.get
.Si apre un riquadro interattivo dal titolo Prova questo metodo.
Nel riquadro, in Parametri di richiesta, inserisci il tuo ID progetto. Il progetto specificato qui deve essere il progetto che stai utilizzando per gestire Storage Transfer Service.
Fai clic su Execute (Esegui).
subjectId
è incluso nella risposta.
Concedi al ruolo uno dei seguenti criteri di autorizzazione:
- AmazonS3ReadOnlyAccess fornisce l'accesso di sola lettura all'origine. In questo modo è possibile effettuare i trasferimenti, ma non è supportata l'eliminazione di oggetti all'origine. una volta completato il trasferimento.
- AmazonS3FullAccess se il trasferimento è configurato per eliminare oggetti alla fonte.
Un ruolo personalizzato con le autorizzazioni appropriate Tabella Autorizzazioni obbligatorie riportata sopra. Il file JSON per le autorizzazioni minime sono simili all'esempio seguente:
{ "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" ] } ] }
Assegna un nome al ruolo e creane uno.
Una volta creato, visualizza i dettagli del ruolo per recuperare il nome della risorsa Amazon (ARN). Prendi nota di questo valore; ha il formato
arn:aws:iam::AWS_ACCOUNT:role/ROLE_NAME
.
Come passi l'ARN a Storage Transfer Service dipende dall'interfaccia che utilizzi per avviare il trasferimento.
console Cloud
Inserisci l'ARN direttamente nel modulo di creazione del job di trasferimento.
Consulta Creare trasferimenti per visualizzare a iniziare.
Interfaccia a riga di comando gcloud
Crea un file JSON con il seguente formato:
{
"roleArn": "ARN"
}
Passa la posizione del file al comando gcloud transfer jobs create
con il flag source-creds-file
:
gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
--source-creds-file=PATH/TO/ARNFILE.JSON
API REST
L'oggetto transferSpec
deve contenere le informazioni ARN come parte di:
l'oggetto awsS3DataSource
:
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"roleArn": "ARN"
},
"gcsDataSink": {
"bucketName": "GCS_SINK_NAME"
}
}
Librerie client
Esamina gli esempi nel Pagina Crea trasferimenti.
Limitazioni IP
Se il progetto AWS utilizza restrizioni IP per l'accesso allo spazio di archiviazione, è necessario aggiungi gli intervalli IP utilizzati dai worker di Storage Transfer Service all'elenco delle IP.
Poiché questi intervalli IP possono cambiare, pubblichiamo i valori attuali in formato JSON file a un indirizzo permanente:
https://www.gstatic.com/storage-transfer-service/ipranges.json
Quando al file viene aggiunto un nuovo intervallo, attenderemo almeno 7 giorni prima e utilizzare quell'intervallo per le richieste da Storage Transfer Service.
Ti consigliamo di estrarre i dati da questo documento almeno ogni settimana per conservare la configurazione di sicurezza. Per uno script Python di esempio che recupera gli intervalli di indirizzi IP da un file JSON; consulta questo articolo del documentazione.
Per aggiungere questi intervalli come IP consentiti, utilizza il campo Condition
in un bucket
come descritto nella documentazione di AWS S3:
Gestione dell'accesso in base a indirizzi IP specifici.