Definir e gerenciar políticas do IAM em pastas gerenciadas

Nesta página, descrevemos como definir políticas do Identity and Access Management (IAM) em pastas gerenciadas para que você tenha controle de acesso refinado sobre grupos específicos. de objetos em um bucket.

Se você estiver procurando outros métodos de controle de acesso, consulte os seguintes recursos:

Funções exigidas

Para receber as permissões necessárias para definir e gerenciar políticas do IAM para pastas gerenciadas, peça ao administrador que conceda a você o papel de Administrador de pastas do Storage (roles/storage.folderAdmin) do IAM para o bucket que contém as pastas gerenciadas.

Esse papel contém as permissões necessárias para definir e gerenciar políticas do IAM para pastas gerenciadas:

  • storage.managedfolders.getIamPolicy

  • storage.managedfolders.setIamPolicy

Também é possível receber essas permissões com funções personalizadas.

Para informações sobre como conceder papéis para buckets, consulte Definir e gerenciar políticas do IAM em buckets.

Defina uma política do IAM em uma pasta gerenciada

Console

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

    Acessar buckets

  2. Na lista de buckets, clique no nome do bucket que contém a pasta gerenciada em que você quer definir uma política do IAM.

  3. Na página Detalhes do bucket, clique no ícone Mais opções no painel Navegador de pastas ao lado das pasta gerenciada em que você quer definir uma política do IAM.

    Se você quiser controlar o acesso em uma pasta ou uma pasta simulada, siga as etapas em Criar uma pasta gerenciada para ativar o gerenciamento na pasta ou na pasta simulada.

  4. Clique em Editar acesso.

  5. No painel PermissõesMANAGED_FOLDER_NAME, clique em Adicionar principal.

  6. No campo Novos principais, insira a principal a que você quer conceder acesso. Para mais informações sobre os principais que podem ser incluídos, consulte Identificadores principais.

  7. Na seção Atribuir papéis, use o menu suspenso Selecionar um papel para especificar o nível de acesso que você quer conceder ao principal.

  8. Clique em Salvar.

Linha de comando

  1. Crie um arquivo JSON com as informações a seguir:

    {
      "bindings":[
        {
          "role": "IAM_ROLE",
          "members":[
            "PRINCIPAL_IDENTIFIER"
          ]
        }
      ]
    }

    Em que:

    • IAM_ROLE é o papel do IAM que você concede. Por exemplo, roles/storage.objectViewer.

    • PRINCIPAL_IDENTIFIER identifica para quem você está concedendo acesso à pasta gerenciada. Por exemplo, user:jane@gmail.com. Para uma lista de formatos de identificadores de principais, confira Identificadores de principais.

  2. Use o comando gcloud storage managed-folders set-iam-policy (em inglês).

    gcloud storage managed-folders set-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME POLICY_FILE

    Em que:

    • BUCKET_NAME é o nome do bucket que contém a pasta gerenciada que você quer aplicar a política do IAM. Por exemplo, my-bucket.

    • MANAGED_FOLDER_NAME é o nome da pasta gerenciada que você quer aplicar a política do IAM. Por exemplo, my-managed-folder/.

    • POLICY_FILE é o caminho para o arquivo JSON que você criou na etapa 1.

APIs REST

JSON

  1. Ter a CLI gcloud instalada e inicializada, o que permite gerar um token de acesso para o cabeçalho Authorization.

  2. Crie um arquivo JSON com as informações a seguir:

    {
      "bindings":[
        {
          "role": "IAM_ROLE",
          "members":[
            "PRINCIPAL_IDENTIFIER"
          ]
        }
      ]
    }

    Em que:

    • IAM_ROLE é o papel do IAM que você concede. Por exemplo, roles/storage.objectViewer.

    • PRINCIPAL_IDENTIFIER identifica para quem você está concedendo acesso à pasta gerenciada. Por exemplo, user:jane@gmail.com. Para uma lista de formatos de identificadores de principais, consulte Identificadores de principais.

  3. Use cURL para chamar a API JSON com uma solicitação PUT setIamPolicy:

    curl -X PUT --data-binary @POLICY_FILE \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"

    Em que:

    • POLICY_FILE é o caminho para o arquivo de política JSON criado na etapa anterior.

    • BUCKET_NAME é o nome do bucket que contém a pasta gerenciada que você quer aplicar a política do IAM. Por exemplo, my-bucket.

    • MANAGED_FOLDER_NAME é o nome da pasta gerenciada que você quer conceder acesso principal. Por exemplo, my-managed-folder/.

Confira a política do IAM para uma pasta gerenciada

Console

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

    Acessar buckets

  2. Na lista de buckets, clique no nome do bucket que contém a pasta gerenciada para as quais você quer visualizar as políticas do IAM.

  3. Na página Detalhes do bucket, clique no ícone Mais opções no painel Navegador de pastas ao lado das pasta gerenciada em que você quer visualizar a política do IAM.

  4. Clique em Editar acesso.

O painel Permissões para FOLDER_NAME exibe as permissões na pasta gerenciada, incluindo o principal, o papel, os papéis herdados e as condições do IAM.

Linha de comando

Use o comando gcloud storage managed-folder get-iam-policy (em inglês).

gcloud storage managed-folders get-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME

Em que:

  • BUCKET_NAME é o nome do bucket que contém a pasta gerenciada com a política do IAM que você quer visualizar. Por exemplo, my-bucket.

  • MANAGED_FOLDER_NAME é o nome da pasta gerenciada com a política do IAM que você quer visualizar. Por exemplo, my-managed-folder/.

APIs REST

JSON

  1. Ter a CLI gcloud instalada e inicializada, o que permite gerar um token de acesso para o cabeçalho Authorization.

  2. Use cURL para chamar a API JSON com uma solicitação GET getIamPolicy:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"

    Em que:

    • BUCKET_NAME é o nome do bucket que contém a pasta gerenciada com a política do IAM que você quer visualizar. Por exemplo, my-bucket.

    • MANAGED_FOLDER_NAME é o nome da pasta gerenciada com a política do IAM que você quer visualizar. Por exemplo, my-managed-folder/.

Remova uma principal de uma política de pasta gerenciada

Console

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

    Acessar buckets

  2. Na lista de buckets, clique no nome do bucket que contém a pasta gerenciada para as quais você quer visualizar as políticas do IAM.

  3. Na página Detalhes do bucket, clique no ícone Mais opções no painel Navegador de pastas ao lado das pasta gerenciada em que você quer remover um principal.

  4. Clique em Editar acesso.

  5. No painel Permissões para FOLDER_NAME, insira o nome do principal no campo Filtro.

  6. Clique no ícone de exclusão para excluir o relatório.

O Cloud Storage exclui o principal da sua pasta gerenciada.

Linha de comando

Use o comando gcloud storage managed-folder remove-iam-policy-binding (em inglês).

gcloud storage managed-folders remove-iam-policy-binding  gs://BUCKET_NAME/MANAGED_FOLDER_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE

Em que:

  • BUCKET_NAME é o nome do bucket que contém a pasta gerenciada que você está revogando o acesso. Por exemplo, my-bucket.

  • MANAGED_FOLDER_NAME é o nome da pasta gerenciada com a política do IAM que você quer remover. Por exemplo, my-managed-folder/.

  • PRINCIPAL_IDENTIFIER identifica de quem você está revogando o acesso. Por exemplo, user:jane@gmail.com. Para uma lista de formatos de identificadores de principais, consulte Identificadores de principais.

  • IAM_ROLE é o papel do IAM que você está revogando. Por exemplo, roles/storage.objectViewer.

APIs REST

JSON

  1. Ter a CLI gcloud instalada e inicializada, o que permite gerar um token de acesso para o cabeçalho Authorization.

  2. Receba a política atual aplicada à pasta gerenciada. Para fazer isso, use cURL para chamar a API JSON com uma solicitação GET getIamPolicy:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"

    Em que:

    • BUCKET_NAME é o nome do bucket que contém a pasta gerenciada que você está revogando o acesso. Por exemplo, my-bucket.

    • MANAGED_FOLDER_NAME é o nome da pasta gerenciada com a política do IAM que você quer remover. Por exemplo, my-managed-folder/.

  3. Crie um arquivo JSON com a política que você recuperou na etapa anterior.

  4. Edite o arquivo JSON para remover o principal da política.

  5. Use cURL para chamar a API JSON com uma solicitação PUT setIamPolicy:

    curl -X PUT --data-binary @JSON_FILE_NAME \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"

    Em que:

    • JSON_FILE_NAME é o caminho para o arquivo criado na Etapa 3.

    • BUCKET_NAME é o nome do bucket que contém a pasta gerenciada que você está revogando o acesso. Por exemplo, my-bucket.

    • MANAGED_FOLDER_NAME é o nome da pasta gerenciada com a política do IAM que você quer remover. Por exemplo, my-managed-folder/.

Use condições do IAM em pastas gerenciadas

As seções a seguir mostram como adicionar e remover Condições do IAM nas pastas gerenciadas. Para ver as condições do IAM das pastas gerenciadas, confira Como visualizar a política do IAM de uma pasta gerenciada. Para mais informações sobre como usar as condições do IAM com o Cloud Storage, confira Condições.

É necessário ativar o acesso uniforme no nível do bucket antes de adicionar condições às pastas gerenciadas.

Defina uma nova condição em uma pasta gerenciada

Linha de comando

  1. Crie um arquivo JSON ou YAML que defina a condição, incluindo o title da condição, a lógica baseada em atributo expression da condição e, opcionalmente, um description para a condição.

    O Cloud Storage só é compatível com a data/hora, tipo de recurso e nome do recurso atribuídos no expression.

  2. Use o comando gcloud storage managed-folders add-iam-policy-binding com a sinalização --condition-from-file.

gcloud storage managed-folders add-iam-policy-binding  gs://BUCKET_NAME/MANAGED_FOLDER_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE --condition-from-file=CONDITION_FILE

Em que:

  • BUCKET_NAME é o nome do bucket que contém a pasta gerenciada que você está concedendo o acesso principal. Por exemplo, my-bucket.

  • MANAGED_FOLDER_NAME é o nome da pasta gerenciada que você está concedendo o acesso principal. Por exemplo, my-managed-folder/.

  • PRINCIPAL_IDENTIFIER identifica a quem a condição se aplica. Por exemplo, user:jane@gmail.com. Para ver uma lista de formatos de identificadores de principais, consulte Identificadores de principais.

  • IAM_ROLE é o papel do IAM que você concede à principal. Por exemplo, roles/storage.objectViewer.

  • CONDITION_FILE é o arquivo criado na etapa anterior.

Como alternativa, é possível incluir a condição diretamente no comando com a flag --condition em vez da flag --condition-from-file.

APIs REST

JSON

  1. Ter a CLI gcloud instalada e inicializada, o que permite gerar um token de acesso para o cabeçalho Authorization.

  2. Use uma solicitação GET getIamPolicy para salvar a política do IAM da pasta gerenciada em um arquivo JSON temporário:

    curl \
    'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam' \
    --header 'Authorization: Bearer $(gcloud auth print-access-token)' > tmp-policy.json

    Em que:

    • BUCKET_NAME é o nome do bucket que contém a pasta gerenciada que você quer definir uma condição do IAM.

    • MANAGED_FOLDER_NAME é o nome da pasta gerenciada que você quer definir uma condição do IAM.

  3. Edite o arquivo tmp-policy.json em um editor de texto para adicionar novas condições às vinculações na política do IAM:

    {
        "version": VERSION,
        "bindings": [
          {
            "role": "IAM_ROLE",
            "members": [
              "PRINCIPAL_IDENTIFIER"
            ],
            "condition": {
              "title": "TITLE",
              "description": "DESCRIPTION",
              "expression": "EXPRESSION"
            }
          }
        ],
        "etag": "ETAG"
    }

    Em que:

    • VERSION é a versão da política do IAM, que precisa ser 3 para pastas gerenciadas com Condições do IAM.

    • IAM_ROLE é o papel ao qual a condição se aplica. Por exemplo, roles/storage.objectViewer.

    • PRINCIPAL_IDENTIFIER identifica a quem a condição se aplica. Por exemplo, user:jane@gmail.com. Para uma lista de formatos de identificadores de principais, consulte Identificadores de principais.

    • TITLE é o título da condição. Por exemplo, expires in 2019.

    • DESCRIPTION é uma descrição opcional da condição. Por exemplo, Permission revoked on New Year's.

    • EXPRESSION é uma expressão lógica com base em atributos. Por exemplo, request.time < timestamp(\"2019-01-01T00:00:00Z\"). Para ver mais exemplos de expressões, consulte a referência do atributo de condições. O Cloud Storage aceita apenas os atributos data/hora, tipo de recurso e nome do recurso.

    Não modifique ETAG.

  4. Use uma solicitação PUT setIamPolicy para definir a política de IAM modificada no bucket:

    curl -X PUT --data-binary @tmp-policy.json \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFoldersMANAGED_FOLDER_NAME/iam"

    Em que:

    • BUCKET_NAME é o nome do bucket que contém a pasta gerenciada que você quer definir uma condição do IAM.

    • MANAGED_FOLDER_NAME é o nome da pasta gerenciada que você quer definir uma condição do IAM.

Remova uma condição de uma pasta gerenciada

Linha de comando

  1. Use o comando gcloud storage managed-folders get-iam-policy para salvar a política do IAM da pasta gerenciada em um arquivo JSON temporário.

    gcloud storage managed-folders get-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME > tmp-policy.json
  2. Edite o arquivo tmp-policy.json em um editor de texto para remover condições da política de IAM.

  3. Use o comando gcloud storage managed-folders set-iam-policy para definir a política do IAM modificada na pasta gerenciada.

    gcloud storage managed-folders set-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME tmp-policy.json

APIs REST

JSON

  1. Ter a CLI gcloud instalada e inicializada, o que permite gerar um token de acesso para o cabeçalho Authorization.

  2. Use uma solicitação GET getIamPolicy para salvar a política do IAM da pasta gerenciada em um arquivo JSON temporário:

    curl \
    'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam' \
    --header 'Authorization: Bearer $(gcloud auth print-access-token)' > tmp-policy.json

    Em que:

    • BUCKET_NAME é o nome do bucket que contém a pasta gerenciada que você está mudando o acesso. Por exemplo, my-bucket.

    • MANAGED_FOLDER_NAME é o nome da pasta gerenciada que você está mudando o acesso. Por exemplo, my-managed-folder/.

  3. Edite o arquivo tmp-policy.json em um editor de texto para remover condições da política de IAM.

  4. Use uma solicitação PUT setIamPolicy para definir a política do IAM modificada na pasta gerenciada:

    curl -X PUT --data-binary @tmp-policy.json \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam"

    Em que:

    • BUCKET_NAME é o nome do bucket que contém a pasta gerenciada que você está mudando o acesso. Por exemplo, my-bucket.

    • MANAGED_FOLDER_NAME é o nome da pasta gerenciada que você está mudando o acesso. Por exemplo, my-managed-folder/.

Usar o IAM com projetos

Consulte Gerenciar o acesso a projetos, pastas gerenciadas e organizações para orientações sobre como conceder e revogar papéis do IAM no nível do projeto e acima.

Práticas recomendadas

Defina o papel mínimo possível que concede ao membro o acesso necessário. Por exemplo, se um membro da equipe só precisa visualizar as pastas gerenciadas em um bucket, conceda o papel Administrador de objetos do Storage (roles/storage.objectAdmin) em vez do Administrador de pastas do Cloud Storage (roles/storage.folderAdmin). Da mesma forma, se o membro da equipe precisar de controle total das pastas gerenciadas em um bucket, conceda a ele o papel Administrador de pastas do Storage (roles/storage.folderAdmin) em vez de amin do Storage (roles/storage.admin).

A seguir