Configurar o acesso a um coletor: sistema de arquivos

Ao transferir dados para um sistema de arquivos local ou de nuvem privada (como POSIX, NFS ou SMB), é necessário configurar o seguinte:

  • Permissões do sistema de arquivos local: conceda aos agentes de transferência de destino acesso de gravação no nível do SO aos diretórios de destino.
  • Permissões de bucket intermediário (somente de arquivo para arquivo): conceda papéis do IAM no bucket intermediário do Cloud Storage usado para preparar arquivos entre sistemas de arquivos.

Pré-requisitos

  • Permissões do usuário: verifique se a conta de usuário ou a conta de serviço gerenciado pelo usuário tem permissão para configurar jobs de transferência e pools de agentes. Consulte Permissões do usuário necessárias.
  • Permissões no nível do projeto baseadas em agente: verifique se você configurou os papéis necessários para envolvidos no projeto para o agente de serviço e a conta do agente de transferência. Consulte Permissões para envolvidos no projeto baseadas em agente.

Permissões do sistema de arquivos de destino local

Os agentes de transferência gravam arquivos diretamente no sistema de arquivos do host. Para permitir gravações bem-sucedidas:

  1. Permissões de usuário do SO: verifique se o usuário do sistema operacional que executa o processo do contêiner tem permissões de leitura, gravação e execução na árvore de diretórios de destino.

  2. Ativar diretórios: ao instalar os agentes de destino, ative o caminho do diretório de destino no contêiner usando a flag --mount-directories:

    gcloud transfer agents install --pool=DESTINATION_POOL_NAME \
     --mount-directories=/path/to/destination/dir

Permissões de bucket intermediário (transferências de arquivo para arquivo)

As transferências entre dois sistemas de arquivos usam um bucket intermediário do Cloud Storage para organizar os arquivos durante a transferência.

Os papéis predefinidos a seguir concedem ao agente de serviço o acesso necessário ao bucket intermediário:

  • Criador de objetos do Storage (roles/storage.objectCreator)
  • Visualizador do objeto do Storage (roles/storage.objectViewer)
  • Leitor de bucket legado do Storage (roles/storage.legacyBucketReader)

O papel a seguir concede o acesso necessário no bucket intermediário às contas do agente de transferência:

  • Usuário de objetos do Storage (roles/storage.objectUser)

Conceda estes papéis no bucket intermediário:

Console

  1. No console do Google Cloud , acesse a página Buckets do Cloud Storage.

    Acessar buckets

  2. Clique no menu Estouro do bucket () do bucket intermediário e selecione Acesso de edição.
  3. Clique em + Adicionar principal.
  4. Em Novos participantes, insira o e-mail do agente de serviço.
  5. Selecione Storage Object Creator, Storage Object Viewer e Storage Legacy Bucket Reader nos menus suspensos Selecionar um papel.
  6. Clique em + Adicionar principal novamente.
  7. Insira o endereço de e-mail das contas de agente de transferência usadas nos pools de agentes de origem e destino.
  8. Selecione Storage Object User no menu suspenso Selecionar um papel.
  9. Clique em Salvar.

gcloud

  1. Conceda papéis de geração de registros e metadados ao agente de serviço:

    gcloud storage buckets add-iam-policy-binding gs://INTERMEDIATE_BUCKET_NAME \
        --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectCreator
    gcloud storage buckets add-iam-policy-binding gs://INTERMEDIATE_BUCKET_NAME \
        --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectViewer
    gcloud storage buckets add-iam-policy-binding gs://INTERMEDIATE_BUCKET_NAME \
        --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReader
  2. Conceda papéis de gerenciamento de objetos às contas de agente de transferência para os pools de agentes de origem e de destino:

    gcloud storage buckets add-iam-policy-binding gs://INTERMEDIATE_BUCKET_NAME \
        --member=serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT --role=roles/storage.objectUser

    Substitua:

    • INTERMEDIATE_BUCKET_NAME: o nome do bucket de preparo intermediário.
    • SERVICE_AGENT_EMAIL: o e-mail do agente de serviço.
    • serviceAccount_OR_user: especifique serviceAccount se a conta do agente de transferência for uma conta de serviço ou user se os agentes tiverem sido instalados com uma conta de usuário.
    • TRANSFER_AGENT_ACCOUNT: o e-mail da conta que executa os agentes de transferência. Repita esse comando se os pools de agentes de origem e destino usarem contas diferentes.

API REST

  1. Gere um token de acesso para autenticar sua solicitação. Se você estiver usando a CLI gcloud, execute:

    gcloud auth print-access-token
  2. Recupere a política de IAM do bucket atual (GET https://storage./storage/v1/b/<var>INTERMEDIATE_BUCKET_NAME</var>/iam), anexe as seguintes vinculações à matriz bindings e salve a política mesclada como intermediate_policy.json:

    {
      "bindings": [
        {
          "role": "roles/storage.objectCreator",
          "members": ["serviceAccount:SERVICE_AGENT_EMAIL"]
        },
        {
          "role": "roles/storage.objectViewer",
          "members": ["serviceAccount:SERVICE_AGENT_EMAIL"]
        },
        {
          "role": "roles/storage.legacyBucketReader",
          "members": ["serviceAccount:SERVICE_AGENT_EMAIL"]
        },
        {
          "role": "roles/storage.objectUser",
          "members": ["serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT"]
        }
      ]
    }

    Substitua:

    • SERVICE_AGENT_EMAIL: o e-mail do agente de serviço.
    • serviceAccount_OR_user: especifique serviceAccount se a conta do agente de transferência for uma conta de serviço ou user se os agentes tiverem sido instalados com uma conta de usuário.
    • TRANSFER_AGENT_ACCOUNT: o e-mail da conta que instalou os agentes de transferência. Se os pools de agentes de origem e destino usarem contas diferentes, inclua as duas na matriz members para roles/storage.objectUser.
  3. Atualize a política do bucket intermediário usando curl:

    curl -X PUT --data-binary @intermediate_policy.json \
        -H "Authorization: Bearer OAUTH2_TOKEN" \
        -H "Content-Type: application/json" \
        "https://storage./storage/v1/b/INTERMEDIATE_BUCKET_NAME/iam"

    Substitua:

    • OAUTH2_TOKEN: o token de acesso do OAuth 2.0 gerado na etapa 1.
    • INTERMEDIATE_BUCKET_NAME: o nome do bucket intermediário.

Para mais informações sobre arquiteturas de arquivo para arquivo, consulte Transferências de sistema de arquivos para sistema de arquivos.

Desempenho e otimização

  • Para maximizar a capacidade ao transferir para sistemas de arquivos grandes, instale vários agentes no pool de agentes de destino (mínimo recomendado de 3). Consulte as práticas recomendadas para agentes de transferência.
  • Para arquivos grandes em transferências de arquivo para arquivo, considere ativar uploads de várias partes para o bucket intermediário. Ao usar o Usuário de objetos do Storage (roles/storage.objectUser), as permissões de upload de várias partes necessárias (storage.multipartUploads.*) são incluídas automaticamente.

A seguir