Puoi configurare l'accesso a un bucket Amazon S3 utilizzando uno dei due metodi:
Aree geografiche supportate
Storage Transfer Service è in grado di trasferire 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 bucket Amazon S3, il tuo account utente o il ruolo dell'identità federata deve disporre delle autorizzazioni appropriate per il bucket:
Autorizzazione | Descrizione | Utilizza |
---|---|---|
s3:ListBucket |
Consente a Storage Transfer Service di elencare gli oggetti nel bucket. | Sempre obbligatorio. |
s3:GetObject |
Consente a Storage Transfer Service di leggere gli oggetti nel bucket. | Obbligatorio se trasferisci la versione corrente di tutti gli oggetti. Se il manifest specifica una versione dell'oggetto, utilizza s3:GetObjectVersion . |
s3:GetObjectVersion |
Consente a Storage Transfer Service di leggere versioni specifiche di oggetti nel bucket. | Obbligatorio se il manifest specifica una versione dell'oggetto. In caso contrario, utilizza 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 autenticarti su AWS:
Crea un utente AWS Identity and Access Management (AWS IAM) con un nome che puoi riconoscere facilmente, ad esempio
transfer-user
.Per il tipo di accesso AWS, seleziona Access key - programmatic access (Chiave di accesso - accesso programmatico).
Concedi all'utente uno dei seguenti ruoli:
- AmazonS3ReadOnlyAccess per fornire l'accesso in sola lettura all'origine. Ciò consente i trasferimenti, ma non supporta l'eliminazione degli oggetti di origine al termine del trasferimento.
- AmazonS3FullAccess se il trasferimento è configurato per eliminare gli oggetti all'origine.
Un ruolo personalizzato con le autorizzazioni appropriate riportate nella tabella Autorizzazioni richieste sopra. Il JSON per le autorizzazioni minime è simile all'esempio riportato di seguito:
{ "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 chiave di accesso e della chiave di accesso segreta quando l'utente è stato creato correttamente.
Il modo in cui passi l'ID 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.
Per iniziare, consulta Creare trasferimenti.
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
utilizzando 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 nell'ambito dell'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
Consulta gli esempi nella pagina Crea trasferimenti.
Salvare le credenziali di accesso in Secret Manager
Secret Manager è un servizio sicuro che archivia e gestisce dati sensibili come le password. Utilizza crittografia avanzata, controllo dell'accesso basato sui ruoli e registrazione delle attività di audit per proteggere i tuoi secret.
Storage Transfer Service può utilizzare Secret Manager per proteggere le tue credenziali di accesso AWS. Carichi le tue credenziali in Secret Manager, quindi li passi il nome della risorsa secret a Storage Transfer Service.
Abilita l'API
Enable the Secret Manager API.
Configurare autorizzazioni aggiuntive
Autorizzazioni utente
L'utente che crea il segreto deve disporre del seguente ruolo:
- Amministratore di 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:
- Secret Manager Secret Accessor (
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'indirizzo email dell'agente di servizio.
Nel menu a discesa Seleziona un ruolo, cerca e seleziona Accesso ai segreti di Secret Manager.
Fai clic su Salva.
gcloud
Utilizza il comando gcloud projects add-iam-policy-binding
per aggiungere il ruolo IAM all'agente di servizio.
Segui le istruzioni per recuperare l'email dell'agente di servizio.
Nella riga di comando, inserisci il seguente 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 di 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 le 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 ulteriori dettagli sulla creazione e sulla gestione dei secret, consulta la documentazione di Secret Manager.
Passa il segreto al comando di creazione del job
L'utilizzo di Secret Manager con Storage Transfer Service richiede l'utilizzo dell'API REST per creare un job di trasferimento.
Passa il nome della risorsa Secret Manager come valore del 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"
}
}
}
Esegui l'autenticazione utilizzando l'identità federata
Per utilizzare l'identità federata per autenticarti 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
subjectID
dell'account di servizio gestito da Google che viene creato automaticamente quando inizi a utilizzare Storage Transfer Service. Per recuperare ilsubjectID
:Vai alla pagina di riferimento
googleServiceAccounts.get
.Viene visualizzato un riquadro interattivo denominato Prova questo metodo.
Nel riquadro, in Parametri di richiesta, inserisci il tuo ID progetto. Il progetto specificato qui deve essere quello che utilizzi 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. Ciò consente i trasferimenti, ma non supporta l'eliminazione degli oggetti di origine al termine del trasferimento.
- AmazonS3FullAccess se il trasferimento è configurato per eliminare gli oggetti all'origine.
Un ruolo personalizzato con le autorizzazioni appropriate riportate nella tabella Autorizzazioni richieste sopra. Il JSON per le autorizzazioni minime è simile all'esempio riportato di seguito:
{ "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 crealo.
Una volta creato, visualizza i dettagli del ruolo per recuperare l'Amazon Resource Name (ARN). Prendi nota di questo valore, che ha il formato
arn:aws:iam::AWS_ACCOUNT:role/ROLE_NAME
.
Il modo in cui 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.
Per iniziare, consulta Creare trasferimenti.
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
utilizzando 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 sull'ARN nell'ambito dell'oggetto awsS3DataSource
:
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"roleArn": "ARN"
},
"gcsDataSink": {
"bucketName": "GCS_SINK_NAME"
}
}
Librerie client
Consulta gli esempi nella pagina Crea trasferimenti.
Restrizioni IP
Se il tuo progetto AWS utilizza limitazioni IP per l'accesso allo spazio di archiviazione, devi aggiungere gli intervalli IP utilizzati dai worker di Storage Transfer Service al tuo elenco di IP consentiti.
Poiché questi intervalli IP possono cambiare, pubblichiamo i valori correnti come file JSON in un indirizzo permanente:
https://www.gstatic.com/storage-transfer-service/ipranges.json
Quando viene aggiunto un nuovo intervallo al file, aspettiamo almeno 7 giorni prima di utilizzarlo per le richieste di Storage Transfer Service.
Ti consigliamo di estrarre i dati da questo documento almeno una volta alla settimana per mantenere aggiornata la configurazione della sicurezza. Per uno script Python di esempio che recupera gli intervalli IP da un file JSON, consulta questo articolo della documentazione di Virtual Private Cloud.
Per aggiungere questi intervalli come IP consentiti, utilizza il campo Condition
in un criterio del bucket, come descritto nella documentazione di AWS S3:
Gestire l'accesso in base ad indirizzi IP specifici.