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 Google Cloud recursos, 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, é necessário usar a ferramenta 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 Google Cloud console.

Funções exigidas

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

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 personalizados papéis ou outros predefinidos papéis.

Para informações sobre como conceder papéis do Secure Source Manager, consulte Controle de acesso com o IAM e Conceder acesso de 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ê usar a federação de identidade de colaboradores para acessar o Secure Source Manager, os principais serã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 Acessador de instâncias (roles/securesourcemanager.instanceAccessor) no pool de força de trabalho my-pool na instância my-instance no projeto my-project na região us-central1:

  gcloud 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 usuários ou grupos no 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 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 para principais, use a ferramenta CLI gcloud ou a API Secure Source Manager.

gcloud

  1. Para conceder um papel a um principal em uma instância, execute o seguinte comando:

    gcloud source-manager instances add-iam-policy-binding INSTANCE_ID \
        --project=PROJECT_ID \
        --region=REGION \
        --member=PRINCIPAL \
        --role=ROLE_NAME
    

    Substitua:

    • INSTANCE_ID pelo ID da instância.
    • PROJECT_ID pelo ID ou número do projeto da instância.
    • REGION pela região em que a instância está localizada. Consulte a documentação de locais para ver as regiões disponíveis do Secure Source Manager.
    • PRINCIPAL pelo principal a que você quer conceder o papel. Por exemplo, user:my-user@example.com.
    • ROLE_NAME pelo nome do papel a ser concedido. Por exemplo, roles/securesourcemanager.instanceOwner.
  2. Para revogar um papel de um principal em uma instância, execute o seguinte comando:

    gcloud source-manager instances remove-iam-policy-binding INSTANCE_ID \
        --project=PROJECT_ID \
        --region=REGION \
        --member=PRINCIPAL \
        --role=ROLE_NAME
    

    Substitua:

    • INSTANCE_ID pelo ID da instância.
    • PROJECT_ID pelo ID ou número do projeto da instância.
    • REGION pela região em que a instância está localizada.
    • PRINCIPAL pelo principal de que você quer revogar o papel. Por exemplo, user:my-user@example.com.
    • ROLE_NAME pelo nome do papel a ser revogado. Por exemplo, roles/securesourcemanager.instanceOwner.

API

  1. Execute o comando instances.getIamPolicy a seguir 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 do projeto ou número do projeto da instância.
    • REGION pela região em que a instância está localizada. Consulte a documentação de locais para ver as regiões disponíveis do Secure Source Manager.
    • INSTANCE_ID pelo ID da instância.

    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 garantir que você não substitua 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.

    {
    "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 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 pelo ID ou número do projeto da instância.
    • REGION pela região em que a instância está localizada. Consulte a documentação de locais para ver as regiões disponíveis do Secure Source Manager.
    • INSTANCE_ID pelo ID da instância.

Conceder ou revogar papéis de repositório

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

Os usuários precisam receber um papel de instância antes de receber papéis 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 de nível de repositório a usuários ou contas de serviço usando a interface da Web:

  1. Navegue até o URL da instância fornecido pelo 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 o papel.
  6. No menu Atribuir um papel, selecione o papel a ser atribuído.
  7. Clique em Salvar.

Para adicionar outros papéis, clique no ícone de edição 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 comando repositories.getIamPolicy a seguir 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 pelo ID ou número do projeto do repositório.
  • REGION pela região em que o repositório está localizado.
  • REPOSITORY_ID pelo ID do repositório.

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

{
    "etag": "BwUjHYKJUiQ="
}
  1. De maneira programática ou usando 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 garantir que você não substitua 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.<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 pelo ID ou número do projeto do repositório.
    • REGION pela região em que o repositório está localizado. Consulte a documentação de locais para ver as regiões disponíveis do Secure Source Manager.
    • REPOSITORY_ID pelo ID do repositório.

A seguir