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:
-
Conceda papéis do IAM da instância:
Proprietário da instância do Secure Source Manager (
roles/securesourcemanager.instanceOwner
) na instância do Secure Source Manager -
Conceda papéis do IAM do repositório:
Administrador do repositório do Secure Source Manager (
roles/securesourcemanager.repoAdmin
) no repositório
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:
- Leia a política de permissão atual chamando
getIamPolicy()
. - 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.
- Escreva a política de permissão atualizada chamando
setIamPolicy()
.
gcloud
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=" }
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 campoetag
identifica o estado atual da política de permissão. Quando você define a política de permissão atualizada, o IAM compara o valoretag
na solicitação com oetag
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
auser1@gmail.com
e o papelinstanceManager
aos usuáriosuser2@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 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
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=" }
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 campoetag
identifica o estado atual da política de permissão. Quando você define a política de permissão atualizada, o IAM compara o valoretag
na solicitação com oetag
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
auser1@gmail.com
e o papelinstanceManager
aos usuáriosuser2@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 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:
- Acesse o URL da instância fornecido pelo seu contato do Google.
- Na página Meus repositórios, selecione seu repositório.
- Clique na guia Permissões.
- Na seção Pessoas e permissões, clique em Adicionar usuários.
- 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.
- No menu Atribuir um papel, selecione o papel a ser atribuído.
- 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.
- 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="
}
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 campoetag
identifica o estado atual da política de permissão. Quando você define a política de permissão atualizada, o IAM compara o valoretag
na solicitação com oetag
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árioemail1@gmail.com
e o papelrepoWriter
aos usuáriosemail2@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" ] } ] } }
Salve o arquivo
/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:
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
- Saiba mais sobre o controle de acesso com o IAM no Secure Source Manager.