Conceda e revogue funções de IAM

Esta página descreve como conceder funções de gestão de identidade e de acesso (IAM) a responsáveis em recursos do Secure Source Manager. Para obter informações sobre a concessão de funções noutros Google Cloud recursos, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

As instâncias e os repositórios do Secure Source Manager têm as suas próprias funções. A primeira vez que concede funções de instância num projeto, tem de usar a ferramenta de CLI gcloud ou a API REST. Pode conceder funções de repositório com a ferramenta gcloud CLI, a API REST ou através da interface Web do Secure Source Manager.

Depois de conceder uma função do Secure Source Manager através da CLI gcloud, da interface Web ou da API REST, a função fica visível para o seu projeto na Google Cloud consola.

Funções necessárias

Para receber as autorizações de que precisa para atualizar a política IAM numa instância ou num repositório, peça ao seu administrador para lhe conceder as seguintes funções do IAM:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Para obter informações sobre a concessão de funções do Secure Source Manager, consulte os artigos Controlo de acesso com o IAM e Conceda aos utilizadores acesso à instância.

Especifique os principais

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

PRINCIPAL-TYPE:ID

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

Para o tipo de principal user, o nome de domínio no identificador tem de ser um domínio do Google Workspace ou um domínio do Cloud ID, a menos que esteja a usar a Federação de identidades da força de trabalho. Para saber como configurar um domínio do Cloud Identity, consulte a vista geral do Cloud Identity.

Principais da federação de identidade da força de trabalho

Se usar a federação de identidades da força de trabalho para aceder ao Secure Source Manager, os principais são representados de forma diferente. Para saber como conceder acesso a principais que representam grupos de identidades, consulte o artigo Represente utilizadores do grupo de funcionários em políticas do IAM.

Por exemplo, o comando seguinte concede ao utilizador user@example.com a função de Instance Accessor (roles/securesourcemanager.instanceAccessor) no grupo de trabalhadores 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

Pode conceder utilizadores ou grupos no seu conjunto de identidades da força de trabalho com base nos atributos do fornecedor de identidades (IdP) ou usar a linguagem de expressão comum (CEL) para mapear os atributos OIDC para atributos personalizados de modo a definir uma estratégia de autorização na sua política de IAM. Para mais informações sobre os mapeamentos de atributos, leia o artigo Mapeamentos de atributos.

Conceda ou revogue funções de instância

Para conceder ou revogar funções de instância, use o padrão read-modify-write para atualizar a política de autorização do recurso:

  1. Leia a política de permissão atual chamando getIamPolicy().
  2. Edite a política de autorização através de um editor de texto ou de forma programática para adicionar ou remover quaisquer responsáveis ou associações de funções.
  3. Escreva a política de permissão atualizada chamando setIamPolicy().

gcloud

  1. Para ler a política de permissão atual e guardá-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 o seguinte:

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

    A saída inclui todas as associações existentes ou, se não existirem, o valor etag semelhante ao seguinte:

    {
        "etag": "BwUjHYKJUiQ="
    }
    
  2. Modifique programaticamente ou através de um editor de texto a cópia local da política de autorização da instância para refletir as funções que quer conceder ou revogar.

    Para garantir que não substitui outras alterações, 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 autorização. Quando define a política de permissão atualizada, o IAM compara o valor etag no pedido com o etag existente e só escreve a política de permissão se os valores corresponderem.

    Para editar as funções que uma política de autorização concede, tem de editar as associações de funções na política de autorização. As associações de funções têm o seguinte formato:

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

    Os marcadores de posição têm os seguintes valores:

    • ROLE_NAME: o nome da função que quer conceder. Use o seguinte formato: roles/securesourcemanager.IDENTIFIER

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: identificadores dos principais aos quais quer conceder a função.

    Por exemplo, a seguinte política concede a função instanceOwner a user1@gmail.com e a função instanceManager aos utilizadores 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 autorização guardada para conceder e revogar as funções selecionadas, atualize a política de autorizaçã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 o seguinte:

    • INSTANCE_ID com o ID da instância.
    • PROJECT_ID com o ID do projeto ou o número do projeto da instância.
    • REGION com a região onde a instância está localizada. Consulte a documentação sobre localizações para ver 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 o seguinte:

    • PROJECT_ID o ID ou o número do projeto da instância.
    • REGION a região onde a instância está localizada. Consulte a documentação sobre localizações para ver as regiões disponíveis do Secure Source Manager.
    • INSTANCE_ID O ID da instância.

    A saída inclui todas as associações existentes ou, se não existirem, o valor etag semelhante ao seguinte:

    {
        "etag": "BwUjHYKJUiQ="
    }
    
  2. Modifique a cópia local da política de autorização da instância de forma programática ou através de um editor de texto para refletir as funções que quer conceder ou revogar.

    Para garantir que não substitui outras alterações, 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 autorização. Quando define a política de permissão atualizada, o IAM compara o valor etag no pedido com o valor etag existente e só escreve a política de permissão se os valores corresponderem.

    Para editar as funções que uma política de autorização concede, tem de editar as associações de funções na política de autorização. As associações de funções têm o seguinte formato:

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

    Os marcadores de posição têm os seguintes valores:

    • ROLE_NAME: o nome da função que quer conceder. Use o seguinte formato: roles/securesourcemanager.IDENTIFIER

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: identificadores dos principais aos quais quer conceder a função.

    Por exemplo, a seguinte política concede a função instanceOwner a user1@gmail.com e a função instanceManager aos utilizadores 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 as funções escolhidas, chame instances.setIamPolicy() para fazer as atualizações.

    Use o comando instances.setIamPolicy seguinte 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 o seguinte:

    • PROJECT_ID o ID ou o número do projeto da instância.
    • REGION a região onde a instância está localizada. Consulte a documentação sobre localizações para ver as regiões disponíveis do Secure Source Manager.
    • INSTANCE_ID O ID da instância.

Conceda ou revogue funções de repositório

Para conceder ou revogar funções de repositório a utilizadores e contas de serviço, pode atribuí-las a partir da interface Web do Secure Source Manager ou usar a API Secure Source Manager para atualizar a política de autorização do repositório. Para conceder funções de repositório a grupos, tem de usar a API Secure Source Manager.

Tem de conceder uma função de instância aos utilizadores antes de lhes poder conceder funções de repositório. Para ver informações sobre como conceder funções de instância, consulte o artigo Conceda ou revogue funções de instância.

Interface Web

Para conceder funções ao nível do repositório a utilizadores ou contas de serviço através da interface Web:

  1. Navegue para o URL da instância fornecido pelo seu contacto da Google.
  2. Na página Os meus repositórios, selecione o seu repositório.
  3. Clique no separador Autorizações.
  4. Na secção Pessoas e autorizações, clique em Adicionar utilizadores.
  5. No campo Adicionar principal, introduza o email do utilizador ou da conta de serviço ao qual quer conceder a função.
  6. No menu Atribuir uma função, selecione a função a atribuir.
  7. Clique em Guardar.

Para adicionar funções adicionais, clique no ícone editar Editar e adicione as funções através do menu Atribuir uma função.

API

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

  1. Execute o seguinte comando repositories.getIamPolicy para ler a política atual e guardá-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 o seguinte:

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

A saída inclui todas as associações existentes ou, se não existirem, o valor etag semelhante ao seguinte:

{
    "etag": "BwUjHYKJUiQ="
}
  1. Modifique programaticamente ou através de um editor de texto a cópia local da política de autorização do repositório guardada em /tmp/repository.json para refletir as funções que quer conceder ou revogar.

    Para garantir que não substitui outras alterações, 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 autorização. Quando define a política de permissão atualizada, o IAM compara o valor etag no pedido com o valor etag existente e só escreve a política de permissão se os valores corresponderem.

    Para editar as funções que uma política de autorização concede, tem de editar as associações de funções na política de autorização. As associações de funções têm o seguinte formato:

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

    Os marcadores de posição têm os seguintes valores:

    • ROLE_NAME: o nome da função que quer conceder. Use o seguinte formato: roles/securesourcemanager.<var>IDENTIFIER</var>

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: identificadores dos principais aos quais quer conceder a função.

    O exemplo seguinte atribui a função repoAdmin ao utilizador email1@gmail.com e a função repoWriter aos utilizadores 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. Guarde o ficheiro /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 o seguinte:

    • REPOSITORY_PROJECT o ID ou o número do projeto do repositório.
    • REGION a região onde o repositório está localizado. Consulte a documentação sobre localizações para ver as regiões disponíveis do Secure Source Manager.
    • REPOSITORY_ID O ID do repositório.

O que se segue?