Permissões de transferência sem agente

As transferências sem agente incluem transferências do Cloud Storage ou do Amazon S3, do armazenamento de blobs do Azure ou do Data Lake Storage Gen2 ou listas de URLs de objetos públicos. Elas não exigem agentes de transferência ou pools de agentes.

Ao transferir dados entre provedores de nuvem em uma transferência sem agente, você precisa conceder permissões a dois participantes:

  • A conta de usuário que está criando ou gerenciando a transferência.
  • Um agente de serviço gerenciado pelo Google que é criado automaticamente na primeira vez que você interage com o Serviço de transferência do Cloud Storage. É possível delegar as permissões do agente de serviço a uma conta de serviço gerenciado pelo usuário. Consulte Delegar permissões do agente de serviço a uma serviço gerenciado pelo usuário.

Saiba como conceder papéis do IAM em Conceder, alterar e revogar o acesso a recursos.

O método mais simples de conceder permissões

A CLI gcloud pode ser usada para conceder as permissões necessárias à conta de usuário e à conta serviço gerenciado pelo Google. Com essas permissões, o usuário pode criar, editar e excluir jobs de transferência e definir ou modificar limites de largura de banda.

Se essas permissões forem muito amplas para as políticas da sua organização, consulte as seções posteriores deste documento para ver as permissões mínimas exigidas pelo Serviço de transferência do Cloud Storage.

Para inspecionar as permissões atuais e imprimir os papéis ausentes, execute o seguinte comando:

gcloud transfer authorize

Para aplicar esses papéis automaticamente, use a sinalização --add-missing:

gcloud transfer authorize --add-missing

Para conceder permissões a uma conta de serviço gerenciado pelo usuário no lugar do usuário, transmita o arquivo de chave da conta de serviço:

gcloud transfer authorize --add-missing --creds-file=path/to/key.json

O comando concede as permissões a seguir.

  • Para o usuário/a conta de serviço gerenciada pelo usuário:

    • roles/owner
    • roles/storagetransfer.admin
    • roles/storagetransfer.transferAgent
    • roles/storage.objectAdmin
    • roles/pubsub.editor
  • Para o agente de serviço gerenciado pelo Google:

    • roles/storage.admin
    • roles/storagetransfer.serviceAgent

Saiba como instalar a CLI gcloud no Guia de início rápido do gcloud.

Permissões da conta de usuário

A conta de usuário precisa de permissão para executar operações do Serviço de transferência do Cloud Storage. Essas permissões são concedidas por um dos dois papéis: Usuário de transferência do Storage ou Administrador de transferência do Storage.

Além disso, a conta precisa ter permissão para recuperar o agente de serviço gerenciado pelo Google para verificar as permissões dele.

Para configurar a conta de usuário ou a conta de serviço gerenciado pelo usuário, conceda as seguintes permissões e papéis do IAM.

Papel / permissão Efeitos Notas
resourcemanager.projects.getIamPolicy Essa permissão é usada para confirmar que a conta de serviço gerenciada pelo Google tem as permissões necessárias para uma transferência. Para conceder essa permissão, conceda o papel predefinido Visualizador de papéis (roles/iam.roleViewer) ou crie um papel personalizado com esta permissão única e conceda o papel personalizado.
Um dos seguintes papéis:
Administrador de transferências do Storage (roles/storagetransfer.admin) Permite todas as operações do Serviço de transferência do Cloud Storage, incluindo a exclusão de jobs de transferência. Para ver uma lista detalhada das permissões concedidas, consulte Papéis predefinidos do Serviço de transferência do Cloud Storage.
Usuário de transferência do Storage (roles/storagetransfer.user) Permite que o usuário crie, receba, atualize e liste transferências. Não permite que o usuário exclua jobs de transferência. Para ver uma lista detalhada das permissões concedidas, consulte Papéis predefinidos do Serviço de transferência do Cloud Storage.

Permissões de agente de serviço gerenciados pelo Google

O Serviço de transferência do Cloud Storage usa um agente de serviço gerenciado pelo Google para mover seus dados. Essa conta de serviço é criada automaticamente na primeira vez que você cria um job de transferência, chama googleServiceAccounts.get ou visita a página de criação de jobs no console Google Cloud .

O formato da conta de serviço geralmente é project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com. Para recuperar o identificador da conta de serviço, use a chamada de API [googleServiceAccounts.get][googleServiceAccounts.get].

Atribuir papéis automaticamente

Há duas maneiras de atribuir automaticamente os papéis corretos ao agente de serviço:

Atribuir papéis manualmente

Para permitir que o agente de serviço acesse os recursos necessários para concluir as transferências, atribua os seguintes papéis ou permissões equivalentes ao agente de serviço.

Papel / permissão Efeitos Observações
Gravador de bucket legado do Storage (roles/storage.legacyBucketWriter) Ativa o Serviço de transferência do Cloud Storage para ler metadados do bucket, listar objetos no bucket e gravar objetos no bucket de destino.

Conceder no bucket de destino do Cloud Storage.

Os papéis legacy do Cloud Storage só podem ser concedidos no nível do bucket.

Leitor de objetos do Storage (roles/storage.objectViewer)

Permite que o Storage Transfer Service copie objetos de uma fonte do Cloud Storage.

Também permite que o Serviço de transferência do Cloud Storage determine se um arquivo já existe no destino do Cloud Storage e se ele foi modificado.

Conceder no bucket de origem do Cloud Storage se estiver transferindo do Cloud Storage.

Também conceda no bucket de destino do Cloud Storage se a transferência estiver configurada para [substituir objetos](/storage-transfer/docs/reference/rest/v1/TransferOptions#OverwriteWhen) no coletor quando for diferente ou nunca. Não é necessário se a configuração de transferência for sempre substituir.

Se apropriado para sua situação, conceda o papel no nível do projeto em que o Serviço de transferência do Cloud Storage está sendo executado.

Leitor de bucket legado do Storage (roles/storage.legacyBucketReader) Permite que o Storage Transfer Service leia metadados do bucket do Cloud Storage.

Conceder no bucket de origem do Cloud Storage se estiver transferindo do Cloud Storage.

Os papéis legacy do Cloud Storage só podem ser concedidos no nível do bucket.

Consulte Conceder as permissões necessárias para ver as instruções.

Delegar a uma conta serviço gerenciado pelo usuário

É possível delegar as permissões do agente de serviço a uma conta serviço gerenciado pelo usuário. Isso permite separar as permissões de bucket para diferentes jobs de transferência em contas de serviço, em vez de centralizá-las em um único agente de serviço.

Para mais detalhes, consulte Delegar permissões do agente de serviço a uma serviço gerenciado pelo usuário.

Transferências entre projetos do Cloud Storage

Para transferir objetos entre buckets do Cloud Storage em projetos diferentes, é necessário conceder permissão a um único agente de serviço nos buckets de origem e de destino. O agente de serviço pertence ao projeto de que você está criando a transferência.

O Usuário ou a conta de serviço gerenciada pelo usuário só precisa de permissões no projeto que está criando a transferência.

Para receber o e-mail do agente de serviço, consulte Encontrar o e-mail do agente de serviço.

No bucket de origem, atribua os seguintes papéis no nível do bucket ao agente de serviço:

  • Storage Legacy Bucket Reader
  • Storage Object Viewer

No bucket de destino, atribua o seguinte papel no nível do bucket ao mesmo agente de serviço:

  • Storage Legacy Bucket Writer

Para instruções sobre como atribuir papéis no nível do bucket, consulte as seguintes páginas:

Os papéis Legacy do Cloud Storage não podem ser concedidos no nível do projeto.

Restrições organizacionais

Caso sua organização tenha aplicado as restrições dapolítica da organização como restrições de domínio (constraints/iam.allowedPolicyMemberDomains ) ou desativação da conexão de contas de serviço a recursos em outros projetos (constraints/iam.disableCrossProjectServiceAccountUsage ), essas restrições precisam ser atualizadas antes que as transferências entre projetos sejam bem-sucedidas.

Também pode ser necessário atualizar as configurações do controle de serviço da VPC para oferecer suporte a transferências entre projetos. Consultee Configurar o VPC Service Controls para transferências de armazenamento de objetos na nuvem.

Permissões da AWS e da Microsoft

Você também precisará configurar o acesso aos arquivos de origem se eles estiverem no AWS S3 ou no Microsoft Azure Storage. Os documentos a seguir detalham as etapas necessárias: