Puedes configurar el acceso a un bucket de Amazon S3 mediante uno de estos dos métodos:
Regiones admitidas
El Servicio de transferencia de almacenamiento puede transferir datos desde las siguientes regiones de 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
y us-west-2
.
Permisos necesarios
Para usar el Servicio de transferencia de almacenamiento a fin de transferir datos desde un dispositivo Amazon S3 tu cuenta de usuario o rol de identidad federada debe permisos para el bucket:
Permiso | Descripción | Use |
---|---|---|
s3:ListBucket |
Permite que Servicio de transferencia de almacenamiento enumere objetos en el bucket. | Uso obligatorio. |
s3:GetObject |
Permite que Servicio de transferencia de almacenamiento lea objetos en el bucket. | Es obligatorio si transfieres la versión actual de todos los objetos. Si el manifiesto especifica una versión de objeto, usa s3:GetObjectVersion en su lugar. |
s3:GetObjectVersion |
Permite que Servicio de transferencia de almacenamiento lea versiones específicas de objetos en el bucket. | Obligatorio si tu manifiesto especifica una versión de objeto. De lo contrario, usa s3:GetObject . |
s3:DeleteObject |
Permite que Servicio de transferencia de almacenamiento borre objetos en el bucket. | Se requiere si establece deleteObjectsFromSourceAfterTransfer en true . |
Autentica con credenciales de acceso
Para usar un ID de clave de acceso y una clave secreta para autenticarte en AWS, sigue estos pasos:
Crea un usuario de administración de identidades y accesos de AWS (IAM de AWS) con un nombre que puedas reconocer fácilmente, como
transfer-user
.Para el tipo de acceso a AWS, selecciona Clave de acceso: acceso programático.
Otorga uno de los siguientes roles al usuario:
- AmazonS3ReadOnlyAccess para proporcionar acceso de solo lectura a la fuente. Esto permite las transferencias, pero no admite la eliminación de objetos en la fuente. una vez que se completa la transferencia.
- AmazonS3FullAccess si tu transferencia está configurada para borrar objetos en la fuente.
Un rol personalizado con los permisos adecuados Permisos necesarios anterior. El JSON para los permisos mínimos se ven como el siguiente ejemplo:
{ "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" ] } ] }
Toma nota del ID de clave de acceso y la clave de acceso secreta cuando el usuario esté se creó correctamente.
Cómo pasas el ID de clave de acceso y la clave de acceso secreta al Servicio de transferencia de almacenamiento depende de la interfaz que utilice para iniciar la transferencia.
Consola de Cloud
Ingresa los valores directamente en el formulario de creación de trabajos de transferencia.
Consulta Crea transferencias para empezaste.
gcloud CLI
Crea un archivo JSON con el siguiente formato:
{
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
Pasa la ubicación del archivo al comando gcloud transfer jobs create
con la marca source-creds-file
:
gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
--source-creds-file=PATH/TO/KEYFILE.JSON
API de REST
Tu objeto transferSpec
debe contener la información clave como parte de
el objeto awsS3DataSource
:
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"awsAccessKey": {
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
},
"gcsDataSink": {
"bucketName": "GCS_SINK_NAME"
}
}
Bibliotecas cliente
Consulta los ejemplos en la página Crear transferencias.
Guarda tus credenciales de acceso en Secret Manager
Secret Manager es un servicio seguro que almacena y administra datos sensibles, como contraseñas. Cuenta con encriptación sólida, acceso basado en roles controles de acceso y registros de auditoría para proteger los Secrets.
El Servicio de transferencia de almacenamiento puede aprovechar Secret Manager para proteger tus credenciales de acceso a AWS. Carga tus credenciales en Secret Manager pasar el nombre del recurso del Secret al Servicio de transferencia de almacenamiento.
Habilita la API
Enable the Secret Manager API.
Configura permisos adicionales
Permisos de usuario
El usuario que crea el secreto necesita el siguiente rol:
- Administrador de Secret Manager (
roles/secretmanager.admin
)
Obtén más información para otorgar un rol.
Permisos del agente de servicio
El agente de servicio del Servicio de transferencia de almacenamiento requiere el siguiente rol de IAM:
- Acceso a secretos de Secret Manager (
roles/secretmanager.secretAccessor
)
Para otorgar la función a tu agente de servicio, sigue estos pasos:
Consola de Cloud
Sigue las instrucciones para recuperar el correo electrónico del agente de servicio
Ve a la página de IAM en la consola de Google Cloud.
Haz clic en Otorgar acceso.
En el cuadro de texto Principales nuevas, ingresa el correo electrónico del agente de servicio.
En el menú desplegable Selecciona un rol, busca y selecciona Secret Manager. Acceso a Secrets.
Haz clic en Guardar.
gcloud
Usa el comando gcloud projects add-iam-policy-binding
para agregar la IAM
a tu agente de servicio.
Sigue las instrucciones para recuperar el correo electrónico del agente de servicio
En la línea de comandos, ingresa el siguiente comando:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:SERVICE_AGENT_EMAIL' \ --role='roles/secretmanager.secretAccessor'
Crea un secreto
Crea un secreto con Secret Manager:
Consola de Cloud
Ve a la página Secret Manager en la consola de Google Cloud.
Haz clic en Crear secreto.
Ingresa un nombre.
En el cuadro de texto Valor del secreto, ingresa tus credenciales en el siguiente campo: formato:
{ "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" }
Haz clic en Crear secreto.
Una vez que se haya creado el secreto, anota el nombre completo del recurso del secreto:
Selecciona la pestaña Descripción general.
Copia el valor del ID de recurso. Usa el siguiente formato:
projects/1234567890/secrets/SECRET_NAME
gcloud
Para crear un secreto nuevo con la herramienta de línea de comandos de gcloud, pasa las credenciales en 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 el nombre completo del recurso del secreto:
gcloud secrets describe SECRET_NAME
Observa el valor de name
en la respuesta. Usa el siguiente formato:
projects/1234567890/secrets/SECRET_NAME
Para obtener más información sobre cómo crear y administrar Secrets, consulta el Documentación de Secret Manager.
Pasa tu secreto al comando de creación de trabajos
Usa Secret Manager con El Servicio de transferencia de almacenamiento requiere el uso de la API de REST para crear un trabajo de transferencia.
Pasa el nombre del recurso de Secret Manager como el valor 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"
}
}
}
Autentica mediante identidad federada
Para usar la identidad federada a fin de autenticarte en AWS, sigue estos pasos:
Crea un rol de IAM nuevo en AWS.
Selecciona Política de confianza personalizada como el tipo de entidad de confianza.
Copia y pega la siguiente política de confianza:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "accounts.google.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:sub": "SUBJECT_ID" } } } ] }
Reemplaza SUBJECT_ID por el
subjectID
de la cuenta de servicio administrada por Google que se crea automáticamente cuando comienzas a usar el Servicio de transferencia de almacenamiento. Para recuperar elsubjectID
, haz lo siguiente:Ve a la sección Página de referencia de
googleServiceAccounts.get
Se abrirá un panel interactivo con el título Prueba este método.
En el panel, en Parámetros de solicitud, ingresa el ID del proyecto. El proyecto que especifiques aquí debe ser el proyecto que usas para administrar el Servicio de transferencia de almacenamiento.
Haz clic en Ejecutar. El
subjectId
se incluye en la respuesta.
Otorga una de las siguientes políticas de permisos al rol:
- AmazonS3ReadOnlyAccess proporciona acceso de solo lectura a la fuente. Esto permite las transferencias, pero no admite la eliminación de objetos en la fuente. una vez que se completa la transferencia.
- AmazonS3FullAccess si tu transferencia está configurada para borrar objetos en la fuente.
Un rol personalizado con los permisos adecuados Permisos necesarios anterior. El JSON para los permisos mínimos se ven como el siguiente ejemplo:
{ "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" ] } ] }
Asígnale un nombre al rol y créalo.
Una vez creado, consulte los detalles del rol para recuperar el nombre del recurso de Amazon. (ARN). Ten en cuenta este valor: tiene el formato
arn:aws:iam::AWS_ACCOUNT:role/ROLE_NAME
Cómo pasas el ARN al Servicio de transferencia de almacenamiento depende de la interfaz que utilice para iniciar la transferencia.
Consola de Cloud
Ingresa el ARN directamente en el formulario de creación del trabajo de transferencia.
Consulta Crea transferencias para empezaste.
gcloud CLI
Crea un archivo JSON con el siguiente formato:
{
"roleArn": "ARN"
}
Pasa la ubicación del archivo al comando gcloud transfer jobs create
con la marca source-creds-file
:
gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
--source-creds-file=PATH/TO/ARNFILE.JSON
API de REST
Tu objeto transferSpec
debe contener la información de ARN como parte de
el objeto awsS3DataSource
:
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"roleArn": "ARN"
},
"gcsDataSink": {
"bucketName": "GCS_SINK_NAME"
}
}
Bibliotecas cliente
Consulta los ejemplos en la página Crear transferencias.
Restricciones de IP
Si tu proyecto de AWS usa restricciones de IP para acceder al almacenamiento, debes agrega los rangos de IP que usan los trabajadores del Servicio de transferencia de almacenamiento a la lista IP
Dado que estos rangos de IP pueden cambiar, publicamos los valores actuales como un archivo JSON en una dirección permanente:
https://www.gstatic.com/storage-transfer-service/ipranges.json
Cuando se agregue un rango nuevo al archivo, esperaremos al menos 7 días antes usando ese rango para las solicitudes del Servicio de transferencia de almacenamiento.
Te recomendamos que extraigas los datos de este documento al menos una vez por semana para mantener de que tu configuración de seguridad esté actualizada. Para una secuencia de comandos de Python de muestra que recupera Rangos de IP de un archivo JSON, consulta este artículo de la Oficina documentación.
Para agregar estos rangos como IP permitidas, usa el campo Condition
en un bucket
de servicio estándar, como se describe en la documentación de AWS S3:
Administra el acceso según direcciones IP específicas.