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:
-
Conceda funções IAM da instância:
Proprietário da instância do Secure Source Manager (
roles/securesourcemanager.instanceOwner
) na instância do Secure Source Manager -
Conceda funções IAM do repositório:
Administrador do repositório do Secure Source Manager (
roles/securesourcemanager.repoAdmin
) no repositório
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:
- Leia a política de permissão atual chamando
getIamPolicy()
. - 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.
- Escreva a política de permissão atualizada chamando
setIamPolicy()
.
gcloud
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=" }
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 campoetag
identifica o estado atual da política de autorização. Quando define a política de permissão atualizada, o IAM compara o valoretag
no pedido com oetag
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
auser1@gmail.com
e a funçãoinstanceManager
aos utilizadoresuser2@gmail.com
,user3@gmail.com
e à conta de serviçomy-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" ] } ] }
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
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=" }
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 campoetag
identifica o estado atual da política de autorização. Quando define a política de permissão atualizada, o IAM compara o valoretag
no pedido com o valoretag
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
auser1@gmail.com
e a funçãoinstanceManager
aos utilizadoresuser2@gmail.com
,user3@gmail.com
e à conta de serviçomy-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" ] } ] } }
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:
- Navegue para o URL da instância fornecido pelo seu contacto da Google.
- Na página Os meus repositórios, selecione o seu repositório.
- Clique no separador Autorizações.
- Na secção Pessoas e autorizações, clique em Adicionar utilizadores.
- No campo Adicionar principal, introduza o email do utilizador ou da conta de serviço ao qual quer conceder a função.
- No menu Atribuir uma função, selecione a função a atribuir.
- 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.
- 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="
}
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 campoetag
identifica o estado atual da política de autorização. Quando define a política de permissão atualizada, o IAM compara o valoretag
no pedido com o valoretag
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 utilizadoremail1@gmail.com
e a funçãorepoWriter
aos utilizadoresemail2@gmail.com
,group1@gmail.com
e à conta de serviçomy-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" ] } ] } }
Guarde o ficheiro
/tmp/repository.json
editado.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?
- Saiba mais sobre o controlo de acesso com a IAM no Secure Source Manager.