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:
-
Conceder 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 -
Conceder 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 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
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_NAMESubstitua:
INSTANCE_IDpelo ID da instância.PROJECT_IDpelo ID ou número do projeto da instância.REGIONpela 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.PRINCIPALpelo principal a que você quer conceder o papel. Por exemplo,user:my-user@example.com.ROLE_NAMEpelo nome do papel a ser concedido. Por exemplo,roles/securesourcemanager.instanceOwner.
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_NAMESubstitua:
INSTANCE_IDpelo ID da instância.PROJECT_IDpelo ID ou número do projeto da instância.REGIONpela região em que a instância está localizada.PRINCIPALpelo principal de que você quer revogar o papel. Por exemplo,user:my-user@example.com.ROLE_NAMEpelo nome do papel a ser revogado. Por exemplo,roles/securesourcemanager.instanceOwner.
API
Execute o comando
instances.getIamPolicya 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.jsonSubstitua:
PROJECT_IDo ID do projeto ou número do projeto da instância.REGIONpela 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_IDpelo ID da instância.
A saída vai incluir todas as vinculações atuais ou, se não houver nenhuma, o valor
etagsemelhante 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 garantir que você não substitua outras mudanças, não edite nem remova o campo
etagda política de permissão. O campoetagidentifica o estado atual da política de permissão. Quando você define a política de permissão atualizada, o IAM compara o valoretagna solicitação com oetagatual 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.IDENTIFIERPRINCIPAL_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
instanceOwnerauser1@gmail.come o papelinstanceManageraos usuáriosuser2@gmail.com,user3@gmail.come à 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 para conceder e revogar os papéis escolhidos, chame
instances.setIamPolicy()para fazer as atualizações.Use o comando
instances.setIamPolicya 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.jsonSubstitua:
PROJECT_IDpelo ID ou número do projeto da instância.REGIONpela 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_IDpelo 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:
- Navegue até o URL da instância fornecido pelo 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 o papel.
- No menu Atribuir um papel, selecione o papel a ser atribuído.
- 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.
- Execute o comando
repositories.getIamPolicya 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_PROJECTpelo ID ou número do projeto do repositório.REGIONpela região em que o repositório está localizado.REPOSITORY_IDpelo 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="
}
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.jsonpara 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
etagda política de permissão. O campoetagidentifica o estado atual da política de permissão. Quando você define a política de permissão atualizada, o IAM compara o valoretagna solicitação com oetagatual 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
repoAdminao usuárioemail1@gmail.come o papelrepoWriteraos usuáriosemail2@gmail.com,group1@gmail.come à 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.jsoneditado.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.jsonSubstitua:
REPOSITORY_PROJECTpelo ID ou número do projeto do repositório.REGIONpela 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_IDpelo ID do repositório.
A seguir
- Saiba mais sobre o controle de acesso com o IAM no Secure Source Manager.