Atualizar buckets para um usuário do SFTP

Este documento mostra como atualizar os buckets do Cloud Storage para um usuário do Cloud FTP, incluindo quais buckets um usuário pode acessar e quais permissões ele tem.

Em um nível alto, estas são as etapas para atualizar os buckets de um usuário:

  1. Atualize os papéis do IAM da conta de serviço do usuário.
  2. Mapeie os diretórios do usuário para os buckets atualizados.

Antes de começar

Funções exigidas

Para receber a permissão necessária para atualizar usuários do SFTP, peça ao administrador para conceder a você o papel do IAM de administrador do FTP (roles/ftp.admin) no projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esse papel predefinido contém a ftp.users.update permissão, que é necessária para atualizar usuários do SFTP.

Também é possível conseguir essa permissão com papéis personalizados ou outros papéis predefinidos.

Atualizar papéis do IAM para a conta de serviço de um usuário

Se você mudar os buckets que um usuário pode acessar ou a permissão que ele tem para um mapeamento de diretório atual, atualize a conta de serviço do usuário com os papéis do IAM relevantes. Faça o seguinte:

  1. Acesse o endereço de e-mail da conta de serviço do usuário. Para conferir as etapas, consulte Acessar detalhes sobre um usuário.

  2. Se você adicionar novos buckets ao mapeamento de diretório ou aumentar o acesso a buckets atuais, faça o seguinte:

    1. Conceda a si mesmo o papel Leitor de buckets do Storage (roles/storage.bucketViewer) no bucket, se você ainda não tiver o papel:

      gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
          --member="user:ADMINISTRATOR_EMAIL" \
          --role="roles/storage.bucketViewer"

      Substitua:

      • ADMINISTRATOR_EMAIL: o endereço de e-mail do principal que está criando o usuário do SFTP. Se você estiver criando o usuário (em vez de um aplicativo), esse valor será o endereço de e-mail que você usa para acessar Google Cloud.

      • BUCKET_NAME: o nome do bucket.

    2. Conceda a si mesmo o papel Leitor de objetos do Storage (roles/storage.objectViewer) no bucket, se você ainda não tiver o papel:

      gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
          --member="user:ADMINISTRATOR_EMAIL" \
          --role="roles/storage.objectViewer"
    3. Conceda à conta de serviço do usuário os papéis do IAM necessários para acessar os buckets:

      gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
        --member="serviceAccount:SERVICE_ACCOUNT" \
        --role="ROLE_TO_GRANT"

      Substitua:

      • SERVICE_ACCOUNT: o endereço de e-mail da conta de serviço do usuário.
      • ROLE_TO_GRANT: o papel do IAM a ser concedido. Especifique um dos seguintes papéis:

        • Para acesso somente leitura, use o papel roles/storage.objectViewer.
        • Para acesso de leitura e gravação, use o papel roles/storage.objectAdmin.
    4. Repita as etapas anteriores para cada bucket que o usuário precisa acessar.

  3. Se você remover buckets do mapeamento de diretório ou diminuir o acesso a buckets atuais, revogue o acesso da conta de serviço do usuário:

    gcloud storage buckets remove-iam-policy-binding gs://BUCKET_NAME \
      --member="serviceAccount:SERVICE_ACCOUNT" \
      --role="ROLE_TO_REVOKE"

    Substitua ROLE_TO_REVOKE pelo papel do IAM que você quer revogar.

    Repita essa etapa para cada bucket e papel do IAM que o usuário não deve mais ter acesso.

Atualizar os buckets de um usuário

REST

Para atualizar os buckets de um usuário do SFTP, use o servers.users.patch método. No parâmetro de consulta updateMask, forneça o campo storageDirectoryMappings.

Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:

  • PROJECT_ID: o Google Cloud ID do projeto do servidor.
  • LOCATION_ID: o local do servidor, como us-west1.
  • SERVER_ID: o ID do servidor.
  • USERNAME: o nome de usuário do SFTP.
  • BUCKET_NAME: o nome de um bucket ao qual o usuário do SFTP tem acesso, como example-bucket. Omita o gs://.
  • (Opcional) BUCKET_PREFIX: o caminho de uma pasta no bucket a ser definido como o diretório raiz para esse mapeamento de diretório. Se você omitir esse valor, o Cloud FTP usará a raiz do bucket.
  • DIRECTORY: o caminho do diretório de destino lógico apresentado ao usuário do SFTP. Por exemplo, /home/uploads. Se você omitir esse valor, o Cloud FTP definirá o diretório de destino como /.

    Se você mapear vários buckets ou pastas, forneça um caminho de diretório exclusivo para cada mapeamento.

    Não há suporte para diretórios lógicos aninhados. Se você fornecer vários mapeamentos para um diretório, forneça os diretórios em uma estrutura simples em vez de uma estrutura aninhada. Por exemplo, use /dir1 e /dir2 em vez de /dir1 e /dir1/dir2.

  • SFTP_PERMISSION: o nível de acesso ao diretório. Para acesso somente leitura, defina este valor como READ_ONLY. Para acesso de leitura e gravação, defina esse valor como READ_WRITE.

Para conceder a um usuário acesso a vários buckets, forneça vários mapeamentos de bucket na storageDirectoryMappings lista.

Método HTTP e URL:

PATCH https://ftp.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/servers/SERVER_ID/users/USERNAME?updateMask=storageDirectoryMappings

Corpo JSON da solicitação:

{
  "storageDirectoryMappings": [
    {
      "bucket": "BUCKET_NAME",
      "bucketPrefix": "BUCKET_PREFIX",
      "directory": "DIRECTORY",
      "permission": "SFTP_PERMISSION"
    }
  ]
}

Para enviar a solicitação, expanda uma destas opções:

A resposta identifica uma operação de longa duração. Leva alguns segundos para que o usuário seja atualizado.

Se um usuário tiver uma conexão SFTP ativa, talvez seja necessário desconectar e reconectar para que as configurações de bucket atualizadas entrem em vigor.