Autorizações de transferência baseadas em agentes

Antes de criar uma transferência baseada em agentes, tem de configurar as autorizações para as seguintes entidades:

  • O utilizador ou a conta de serviço gerida pelo utilizador que está a ser usada para criar a transferência. Esta é a conta com sessão iniciada na consola ou a conta especificada quando se autentica na gcloud CLI. Google Cloud A conta de utilizador pode ser uma conta de utilizador normal ou uma conta de serviço gerida pelo utilizador.

  • A conta de serviço gerida pela Google, também conhecida como agente de serviço, usada pelo Serviço de Transferência de Armazenamento. Geralmente, esta conta é identificada pelo respetivo endereço de email, que usa o formato project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com.

  • A conta de agente de transferência que concede Google Cloud autorizações aos agentes de transferência. As contas de agente de transferência usam as credenciais do utilizador que as instala ou as credenciais de uma conta de serviço gerida pelo utilizador para autenticar.

Para mais informações sobre a concessão de funções de IAM, consulte o artigo Conceder, alterar e revogar o acesso a recursos.

O método mais simples de conceder autorizações

A CLI gcloud pode ser usada para conceder as autorizações necessárias à conta de serviço gerida pelo utilizador / utilizador e à conta de serviço gerida pela Google. Estas autorizações permitem ao utilizador criar, editar e eliminar tarefas de transferência, bem como definir ou modificar limites de largura de banda.

Se estas autorizações forem demasiado abrangentes para as políticas da sua organização, consulte as secções posteriores deste documento para ver as autorizações mínimas necessárias para o serviço de transferência de armazenamento.

Para inspecionar as autorizações existentes e imprimir as funções em falta, execute o seguinte comando:

gcloud transfer authorize

Para aplicar automaticamente essas funções, use a flag --add-missing:

gcloud transfer authorize --add-missing

Para conceder autorizações a uma conta de serviço gerida pelo utilizador, transmita o ficheiro de chave da conta de serviço:

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

Para ver instruções sobre como criar uma conta de serviço, consulte o artigo Criar e gerir contas de serviço.

O comando concede as seguintes autorizações.

  • Ao utilizador / conta de serviço gerida pelo utilizador:

    • roles/owner
    • roles/storagetransfer.admin
    • roles/storagetransfer.transferAgent
    • roles/storage.objectAdmin
    • roles/pubsub.editor
  • Para a conta de serviço gerida pela Google:

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

Para ver instruções sobre a instalação da CLI gcloud, consulte o gcloud início rápido.

Autorizações de utilizador ou de conta de serviço gerida pelo utilizador

Esta secção aborda as funções necessárias para as contas que gerem e executam transferências. Os requisitos da sua organização determinam as funções exatas de cada perfil fictício. Esta secção pressupõe que vai criar um administrador e um utilizador.

Contas de administrador

As contas de administrador do Serviço de transferência de armazenamento gerem agentes de transferência, definem limites de utilização da largura de banda e eliminam tarefas de transferência.

Para configurar uma conta de administrador, atribua as seguintes autorizações e funções do IAM:

Função / autorização O que faz Notas
resourcemanager.projects.getIamPolicy Esta autorização é usada para confirmar que a conta de serviço gerida pela Google tem as autorizações necessárias para uma transferência. Para conceder esta autorização, conceda a função predefinida Visualizador de funções (roles/iam.roleViewer) ou crie uma função personalizada com esta única autorização e conceda a função personalizada.
Storage Transfer Admin (roles/storagetransfer.admin) Permite ações administrativas no projeto de transferência, como a configuração do projeto e a monitorização de agentes. Para uma lista detalhada das autorizações concedidas, consulte o artigo Funções predefinidas do Serviço de transferência de armazenamento.

Contas de utilizador

As contas de utilizador do Serviço de transferência de armazenamento são usadas para criar e executar transferências. Normalmente, estas contas não têm acesso para eliminar tarefas de transferência.

Uma conta de utilizador pode ser um Google Cloud utilizador da consola ou uma conta de serviço. Se estiver a usar uma conta de serviço, o método que usa para transmitir as credenciais ao serviço de transferência de armazenamento varia consoante a interface que usa.

Para configurar uma conta de utilizador, atribua as seguintes autorizações e funções à conta:

Função / autorização O que faz Notas
resourcemanager.projects.getIamPolicy Usada para confirmar que a conta de serviço gerida pela Google tem as autorizações do Pub/Sub necessárias para uma transferência. Para conceder esta autorização, conceda a função predefinida Visualizador de funções (roles/iam.roleViewer) ou crie uma função personalizada com esta única autorização e conceda a função personalizada.
Utilizador de transferência de armazenamento (roles/storagetransfer.user) Permite ao utilizador criar, obter, atualizar e listar transferências. Para uma lista detalhada das autorizações concedidas, consulte o artigo Funções predefinidas do Serviço de transferência de armazenamento.

Autorizações da conta de serviço gerida pela Google

O Serviço de transferência de armazenamento usa uma conta de serviço gerida pela Google para mover os seus dados. Esta conta de serviço é criada automaticamente na primeira vez que cria uma tarefa de transferência, chama googleServiceAccounts.get ou visita a página de criação de tarefas na consolaGoogle Cloud .

Normalmente, o formato da conta de serviço é project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com. Para obter o identificador da sua conta de serviço, use a chamada da API googleServiceAccounts.get.

Atribuir funções automaticamente

Existem duas formas de atribuir automaticamente as funções corretas à conta de serviço gerida pela Google:

Atribuir funções manualmente

Para permitir que a conta de serviço gerida pela Google aceda aos recursos necessários para concluir as transferências, atribua as seguintes funções ou autorizações equivalentes à conta de serviço.

Função / autorização O que faz Notas
Storage Object Creator (roles/storage.objectCreator) Permite que o serviço de transferência de armazenamento crie registos de transferência no contentor do Cloud Storage associado a esta transferência. Conceda a todos os contentores do Cloud Storage usados numa transferência. Se for adequado para a sua situação, pode conceder a função ao nível do projeto ao projeto a partir do qual o Serviço de transferência de armazenamento está a ser executado.

Para uma lista detalhada das autorizações que estas funções concedem, consulte Funções predefinidas do Cloud Storage.
Visualizador de objetos de armazenamento (roles/storage.objectViewer) Permite que o Serviço de transferência de armazenamento determine se um ficheiro já foi transferido para ou a partir do Cloud Storage.
Agente do serviço de transferência de armazenamento (roles/storagetransfer.serviceAgent) Permite que o serviço de transferência de armazenamento crie e modifique automaticamente tópicos do Pub/Sub para comunicar a partir de Google Cloud para agentes de transferência. Aplique a função ao nível do projeto ao projeto a partir do qual o Serviço de transferência de armazenamento está a ser executado.

Para uma lista detalhada das autorizações que esta função concede, consulte Autorizações e funções.
Storage Legacy Bucket Reader (roles/storage.legacyBucketReader) Permite que o Serviço de transferência de armazenamento leia os metadados do contentor do Cloud Storage.

Conceda a cada contentor do Cloud Storage usado numa transferência.

As funções do Cloud Storage legacy só podem ser concedidas ao nível do contentor.

Consulte o artigo Conceda as autorizações necessárias para ver instruções.

Transfira autorizações da conta de agente

Os agentes de transferência do Serviço de transferência de armazenamento podem ser executados com a conta do utilizador ou com uma conta de serviço.

Para configurar uma conta de utilizador ou uma conta de serviço de agente de transferência que execute os agentes de transferência, atribua a seguinte função:

Função / autorização O que faz Notas
Storage Transfer Agent (roles/storagetransfer.transferAgent) Concede aos agentes de transferência as autorizações do Serviço de transferência de armazenamento e do Pub/Sub necessárias para concluir uma transferência. Conceda esta função ao utilizador ou à conta de serviço que está a ser usada pelos agentes.

Para uma lista detalhada das autorizações que esta função concede, consulte o artigo Controlo de acesso com a IAM.

Autorizações de origem e destino

Também tem de garantir que a conta de agente tem as autorizações corretas para aceder aos dados de origem e escrever no destino.

Sistema de ficheiros, armazenamento compatível com S3 ou HDFS para o Cloud Storage

Se o destino da transferência for um contentor do Cloud Storage, o agente de transferência precisa das seguintes autorizações no contentor de destino. Consulte o artigo Adicione um principal a uma política ao nível do contentor para ver instruções.

Autorização Descrição
storage.objects.create Permite que a conta de agente escreva objetos do Cloud Storage durante a transferência.
storage.objects.get Permite que a conta de agente leia os dados e os metadados de objetos.
storage.objects.list Permite que a conta de agente liste objetos no contentor do Cloud Storage.
storage.objects.delete Obrigatório se a transferência estiver configurada para substituir ou eliminar objetos no destino; por exemplo, se overwriteObjectsAlreadyExistingInSink ou deleteObjectsUniqueInSink estiverem definidos na configuração transferOptions da transferência.

Para conceder estas autorizações, atribua a seguinte função:

Em alternativa, crie uma função personalizada com as autorizações específicas e conceda a função personalizada.

São necessárias autorizações adicionais para ativar carregamentos multipartes.

Do Cloud Storage para o sistema de ficheiros

Se a origem da transferência for um contentor do Cloud Storage, o agente de transferência precisa da seguinte autorização no contentor de origem.

Autorização Descrição
storage.objects.create Permite que a conta do agente escreva registos de transferência e metadados relacionados com a transferência no contentor de origem do Cloud Storage.
storage.objects.get Permite que a conta de agente leia os dados e os metadados de objetos.
storage.objects.list Permite que a conta de agente liste objetos no contentor do Cloud Storage.
storage.objects.delete Obrigatório se a transferência estiver configurada para eliminar objetos da origem. Consulte deleteObjectsFromSourceAfterTransfer.

Para conceder esta autorização, atribua a seguinte função:

Em alternativa, crie uma função personalizada com a autorização única e conceda a função personalizada.

Sistema de ficheiros para sistema de ficheiros

Se a transferência for entre dois sistemas de ficheiros, o agente de transferência precisa das seguintes autorizações no contentor intermédio.

Autorização Descrição
storage.objects.create Permite que a conta de agente escreva objetos do Cloud Storage durante a transferência.
storage.objects.get Permite que a conta de agente leia os dados e os metadados de objetos.
storage.objects.list Permite que a conta de agente liste objetos no contentor do Cloud Storage.
storage.objects.delete Obrigatório se a transferência estiver configurada para eliminar objetos no contentor intermédio após a conclusão da transferência.

Para conceder estas autorizações, atribua a seguinte função:

Em alternativa, crie uma função personalizada com as autorizações específicas e conceda a função personalizada.

São necessárias autorizações adicionais para ativar carregamentos multipartes.

Carregamentos em várias partes

Para ativar os carregamentos multipartes para transferências do sistema de ficheiros para o Cloud Storage ou transferências entre sistemas de ficheiros, conceda também as seguintes autorizações ao agente.

  • Para transferências para o Cloud Storage, atribua as autorizações ao contentor de destino.
  • Para transferências entre sistemas de ficheiros, atribua as autorizações ao contentor intermédio.
Nome da autorização de carregamento multipartes Descrição
storage.multipartUploads.create Carregue objetos em várias partes.
storage.multipartUploads.abort Abortar sessões de carregamento em várias partes.
storage.multipartUploads.listParts Apresentar as partes do objeto carregadas numa sessão de carregamento em várias partes.
storage.multipartUploads.list Liste as sessões de carregamento multipartes num contentor.

Para conceder estas autorizações, atribua a seguinte função:

Em alternativa, crie uma função personalizada com as autorizações específicas e conceda a função personalizada.