Nesta página, descrevemos como conceder papéis do Identity and Access Management (IAM) a principais em recursos do Secure Source Manager. Para saber 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ê conceder papéis de instância em um projeto, use 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 pelo menos uma vez usando a ferramenta da CLI gcloud, a interface da Web ou a API REST, o papel fica disponível para seleção no console do Google Cloud ao conceder acesso no nível do projeto. No entanto, as atribuições de papel específicas no nível da instância e do repositório (vinculações) não aparecem na lista de principais na página do IAM do console Google Cloud para envolvidos no projeto.
Funções exigidas
Para receber 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 de 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 de repositórios 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 dos 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 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 colaboradores 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 acesso a 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 os atributos do 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 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.PRINCIPALpelo principal que vai receber o papel. Por exemplo,user:my-user@example.com.ROLE_NAMEpelo nome do papel a ser concedido. Por exemplo,roles/securesourcemanager.instanceOwner.
Para revogar o 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 do projeto ou número do projeto da instância.REGIONpela região em que a instância está localizada.PRINCIPALpelo principal de quem o papel será revogado. Por exemplo,user:my-user@example.com.ROLE_NAMEpelo nome do papel a ser revogado. Por exemplo,roles/securesourcemanager.instanceOwner.
API
Execute o seguinte comando
instances.getIamPolicypara 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_ID: o ID do projeto 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 ver 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
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 alterações de política, não edite ou 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 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@.{ "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@" ] } ] } }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 seguinte comando
instances.setIamPolicypara 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_ID: o ID do projeto 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 ver as regiões disponíveis do Secure Source Manager.INSTANCE_ID: o 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, atribua-os na interface da Web do Secure Source Manager ou use 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, use 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 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 o papel.
- No menu Atribuir um papel, selecione o papel que você quer atribuir.
- Clique em Salvar.
Para adicionar outros 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.getIamPolicypara 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_PROJECTo 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 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 alterações de política, não edite ou 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 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@.{ "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@" ] } ] } }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_PROJECTo 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 ver 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.