Conceder e revogar papéis do IAM

Nesta página, descrevemos como conceder papéis do Identity and Access Management (IAM) a principais em recursos do Secure Source Manager. Para informações sobre como conceder papéis em outros recursos do Google Cloud , consulte Gerenciar o acesso a projetos, pastas e organizações.

As instâncias e os repositórios do Secure Source Manager têm papéis próprios. Na primeira vez que você concede papéis de instância em um projeto, use a ferramenta de CLI gcloud ou a API REST. É possível conceder papéis de repositório com a ferramenta CLI gcloud, a API REST ou pela interface da Web do Secure Source Manager.

Depois de conceder um papel do Secure Source Manager usando a CLI gcloud, a interface da Web ou a API REST, o papel fica visível para seu projeto no console Google Cloud .

Funções exigidas

Para ter as permissões necessárias para atualizar a política do IAM em uma instância ou um repositório, peça ao administrador para conceder a você os seguintes papéis do IAM:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

Para informações sobre como conceder papéis do Secure Source Manager, consulte Controle de acesso com o IAM e Conceder acesso à instância aos usuários.

Especificar principais

Um principal representa uma identidade que pode acessar um recurso. Cada principal tem um identificador próprio. Os identificadores principais têm o seguinte formato:

PRINCIPAL-TYPE:ID

Por exemplo, user:my-user@example.com Para mais informações sobre principais, leia Como o IAM funciona.

Para o tipo de principal user, o nome de domínio no identificador precisa ser do Google Workspace ou do Cloud Identity, a menos que você esteja usando a federação de identidade de colaboradores. Para saber como configurar um domínio do Cloud Identity, consulte a visão geral do Cloud Identity.

Principais da federação de identidade de colaboradores

Se você usa a federação de identidade de colaboradores para acessar o Secure Source Manager, os principais são representados de maneira diferente. Para saber mais sobre como conceder acesso a principais que representam grupos de identidades, consulte Representar usuários do pool de força de trabalho nas políticas do IAM.

Por exemplo, o comando a seguir concede ao usuário user@example.com o papel de Leitor de acesso à instância (roles/securesourcemanager.instanceAccessor) no pool de funcionários my-pool na instância my-instance no projeto my-project na região us-central1:

  gcloud beta source-manager instances add-iam-policy-binding my-instance \
      --project=my-project \
      --region=us-central1 \
      --member=principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com \
      --role=roles/securesourcemanager.instanceAccessor

É possível conceder acesso a usuários ou grupos no seu pool de identidades de colaboradores com base nos atributos do provedor de identidade (IdP) ou usar a Common Expression Language (CEL) para mapear seus atributos OIDC para atributos personalizados e definir uma estratégia de autorização na sua política do IAM. Para mais informações sobre mapeamentos de atributos, leia Mapeamentos de atributos.

Conceder ou revogar papéis de instância

Para conceder ou revogar papéis de instância, use o padrão leitura-modificação-gravação para atualizar a política de permissão do recurso:

  1. Leia a política de permissão atual chamando getIamPolicy().
  2. Edite a política de permissões usando um editor de texto ou de forma programática para adicionar ou remover principais ou vinculações de papéis.
  3. Escreva a política de permissão atualizada chamando setIamPolicy().

gcloud

  1. Para ler a política de permissão atual e salvá-la em /tmp/instances.json, execute o seguinte comando:

    gcloud beta source-manager instances get-iam-policy INSTANCE_ID \
        --project=PROJECT_ID \
        --region=REGION \
        --format=json > /tmp/instance.json
    

    Substitua:

    • INSTANCE_ID com o ID da instância.
    • PROJECT_ID com o ID ou número do projeto da instância.
    • REGION com a região em que a instância está localizada. Consulte a documentação de locais para conferir as regiões disponíveis do Secure Source Manager.

    A saída vai incluir todas as vinculações atuais ou, se não houver nenhuma, o valor etag semelhante ao seguinte:

    {
        "etag": "BwUjHYKJUiQ="
    }
    
  2. De maneira programática ou usando um editor de texto, modifique a cópia local da política de permissão da instância para refletir os papéis que você quer conceder ou revogar.

    Para evitar a substituição de outras mudanças, não edite nem remova o campo etag da política de permissão. O campo etag identifica o estado atual da política de permissão. Quando você define a política de permissão atualizada, o IAM compara o valor etag na solicitação com o etag atual e grava a política de permissão somente se os valores corresponderem.

    Para editar os papéis que uma política de permissão concede, é necessário editar as vinculações de papéis na política de permissão. As vinculações de papéis têm o seguinte formato:

    {
      "role": "ROLE_NAME",
      "members": [
        "PRINCIPAL_1",
        "PRINCIPAL_2",
        ...
        "PRINCIPAL_N"
      ]
    }
    

    Os marcadores têm os seguintes valores:

    • ROLE_NAME: o nome do papel que você quer conceder. Use o seguinte formato: roles/securesourcemanager.IDENTIFIER

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: identificadores dos principais a que você quer conceder o papel.

    Por exemplo, a política a seguir concede o papel instanceOwner a user1@gmail.com e o papel instanceManager aos usuários user2@gmail.com,user3@gmail.com e à conta de serviço my-other-app@appspot.gserviceaccount.com.

    {
        "etag": "BwUjHYKJUiQ=",
        "bindings": [
        {
            "role": "roles/securesourcemanager.instanceOwner",
            "members": [
                "user:user1@gmail.com"
            ]
        },
        {
            "role": "roles/resourcemanager.instanceManager",
            "members": [
                "user:user2@gmail.com",
                "user:user3@gmail.com",
                "serviceAccount:my-other-app@appspot.gserviceaccount.com"
            ]
        }
        ]
    }
    
  3. Depois de modificar a política de permissão salva para conceder e revogar os papéis selecionados, atualize a política de permissão da instância executando o seguinte comando:

    gcloud beta source-manager instances set-iam-policy INSTANCE_ID  \
        --project=PROJECT_ID \
        --region=REGION \
        /tmp/instance.json
    

    Substitua:

    • INSTANCE_ID com o ID da instância.
    • PROJECT_ID com o ID ou número do projeto da instância.
    • REGION com a região em que a instância está localizada. Consulte a documentação de locais para conferir as regiões disponíveis do Secure Source Manager.

API

  1. Execute o seguinte comando instances.getIamPolicy para ler a política atual:

    curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID:getIamPolicy > /tmp/instance.json
    

    Substitua:

    • PROJECT_ID o ID ou o número do projeto da instância.
    • REGION é a região em que a instância está localizada. Consulte a documentação de locais para conferir as regiões disponíveis do Secure Source Manager.
    • INSTANCE_ID: o ID da instância.

    A saída vai incluir todas as vinculações atuais ou, se não houver nenhuma, o valor etag semelhante a este:

    {
        "etag": "BwUjHYKJUiQ="
    }
    
  2. De maneira programática ou usando um editor de texto, modifique a cópia local da política de permissão da instância para refletir os papéis que você quer conceder ou revogar.

    Para evitar a substituição de outras mudanças, não edite nem remova o campo etag da política de permissão. O campo etag identifica o estado atual da política de permissão. Quando você define a política de permissão atualizada, o IAM compara o valor etag na solicitação com o etag atual e grava a política somente se os valores corresponderem.

    Para editar os papéis que uma política de permissão concede, é necessário editar as vinculações de papéis na política de permissão. As vinculações de papéis têm o seguinte formato:

    {
      "role": "ROLE_NAME",
      "members": [
        "PRINCIPAL_1",
        "PRINCIPAL_2",
        ...
        "PRINCIPAL_N"
      ]
    }
    

    Os marcadores têm os seguintes valores:

    • ROLE_NAME: o nome do papel que você quer conceder. Use o seguinte formato: roles/securesourcemanager.IDENTIFIER

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: identificadores dos principais a que você quer conceder o papel.

    Por exemplo, a política a seguir concede o papel instanceOwner a user1@gmail.com e o papel instanceManager aos usuários user2@gmail.com,user3@gmail.com e à conta de serviço my-other-app@appspot.gserviceaccount.com.

    {
    "policy": {
        "etag": "BwUjHYKJUiQ=",
        "bindings": [
        {
            "role": "roles/securesourcemanager.instanceOwner",
            "members": [
                "user:user1@gmail.com"
            ]
        },
        {
            "role": "roles/resourcemanager.instanceManager",
            "members": [
                "user:user2@gmail.com",
                "user:user3@gmail.com",
                "serviceAccount:my-other-app@appspot.gserviceaccount.com"
            ]
        }
        ]
    }
    }
    
  3. Depois de modificar a política de permissão para conceder e revogar os papéis escolhidos, chame instances.setIamPolicy() para fazer as atualizações.

    Use o comando instances.setIamPolicy a seguir para definir a nova política na instância.

    curl \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID:setIamPolicy \
        -d @/tmp/instance.json
    

    Substitua:

    • PROJECT_ID o ID ou o número do projeto da instância.
    • REGION é a região em que a instância está localizada. Consulte a documentação de locais para conferir as regiões disponíveis do Secure Source Manager.
    • INSTANCE_ID: o ID da instância.

Conceder ou revogar papéis do repositório

Para conceder ou revogar papéis do repositório a usuários e contas de serviço, atribua-os na interface da Web do Secure Source Manager ou use a API do Secure Source Manager para atualizar a política de permissão do repositório. Para conceder papéis de repositório a grupos, use a API Secure Source Manager.

Os usuários precisam receber uma função de instância antes de receber funções de repositório. Para informações sobre como conceder papéis de instância, consulte Conceder ou revogar papéis de instância.

Interface da Web

Para conceder papéis no nível do repositório a usuários ou contas de serviço usando a interface da Web:

  1. Acesse o URL da instância fornecido pelo seu contato do Google.
  2. Na página Meus repositórios, selecione seu repositório.
  3. Clique na guia Permissões.
  4. Na seção Pessoas e permissões, clique em Adicionar usuários.
  5. No campo Adicionar principal, insira o e-mail do usuário ou da conta de serviço a que você quer conceder a função.
  6. No menu Atribuir um papel, selecione o papel a ser atribuído.
  7. Clique em Salvar.

Para adicionar mais papéis, clique no ícone editar Editar e adicione os papéis usando o menu Atribuir um papel.

API

O método repositories.getIamPolicy da API Secure Source Manager recebe a política de permissão de um repositório.

  1. Execute o seguinte comando repositories.getIamPolicy para ler a política atual e salvá-la em /tmp/repository.json:
curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://securesourcemanager.googleapis.com/v1/projects/REPOSITORY_PROJECT/locations/REGION/repositories/REPOSITORY_ID:getIamPolicy > /tmp/repository.json

Substitua:

  • REPOSITORY_PROJECT o ID do projeto ou o número do projeto do repositório.
  • REGION a região em que o repositório está localizado.
  • REPOSITORY_ID: o ID do repositório.

A saída vai incluir todas as vinculações atuais ou, se não houver nenhuma, o valor etag semelhante a este:

{
    "etag": "BwUjHYKJUiQ="
}
  1. De maneira programática ou com um editor de texto, modifique a cópia local da política de permissão do repositório salva em /tmp/repository.json para refletir os papéis que você quer conceder ou revogar.

    Para evitar a substituição de outras mudanças, não edite nem remova o campo etag da política de permissão. O campo etag identifica o estado atual da política de permissão. Quando você define a política de permissão atualizada, o IAM compara o valor etag na solicitação com o etag atual e grava a política somente se os valores corresponderem.

    Para editar os papéis que uma política de permissão concede, é necessário editar as vinculações de papéis na política de permissão. As vinculações de papéis têm o seguinte formato:

    {
      "role": "ROLE_NAME",
      "members": [
        "PRINCIPAL_1",
        "PRINCIPAL_2",
        ...
        "PRINCIPAL_N"
      ]
    }
    

    Os marcadores têm os seguintes valores:

    • ROLE_NAME: o nome do papel que você quer conceder. Use o seguinte formato: roles/securesourcemanager.<var>IDENTIFIER</var>

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: identificadores dos principais a que você quer conceder o papel.

    O exemplo a seguir concede o papel repoAdmin ao usuário email1@gmail.com e o papel repoWriter aos usuários email2@gmail.com, group1@gmail.com e à conta de serviço my-other-app@appspot.gserviceaccount.com.

    {
    "policy": {
        "etag": "BwUjHYKJUiQ=",
        "bindings": [
        {
            "role": "roles/securesourcemanager.repoAdmin",
            "members": [
                "user:email1@gmail.com"
            ]
        },
        {
            "role": "roles/resourcemanager.repoWriter",
            "members": [
                "user:email2@gmail.com",
                "group:group1@gmail.com",
                "serviceAccount:my-other-app@appspot.gserviceaccount.com"
            ]
        }
        ]
    }
    }
    
  2. Salve o arquivo /tmp/repository.json editado.

  3. Defina a nova política com o comando setIamPolicy:

    curl \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/REPOSITORY_PROJECT/locations/REGION/repositories/REPOSITORY_ID:setIamPolicy \
        -d @/tmp/repository.json
    

    Substitua:

    • REPOSITORY_PROJECT o ID do projeto ou o número do projeto do repositório.
    • REGION a região em que o repositório está localizado. Consulte a documentação de locais para conferir as regiões disponíveis do Secure Source Manager.
    • REPOSITORY_ID: o ID do repositório.

A seguir