No Trusted Cloud by S3NS, os agentes de serviço ao nível do projeto, da pasta e da organização são criados automaticamente à medida que ativa e usa osTrusted Cloud serviços. Por vezes, estes agentes de serviço também recebem automaticamente funções que lhes permitem criar e aceder a recursos em seu nome.
Se necessário, também pode pedir Trusted Cloud para criar agentes de serviços ao nível do projeto, da pasta e da organização para um serviço antes de usar o serviço. Pedir Trusted Cloud para criar agentes de serviço permite-lhe conceder funções a agentes de serviço antes de usar um serviço. Se ainda não tiver sido criado um agente de serviço, não pode conceder funções ao agente de serviço.
Esta opção é útil se usar uma das seguintes estratégias para gerir as suas políticas de autorização:
- Uma estrutura declarativa como o Terraform. Se a sua configuração do Terraform não incluir as funções dos agentes de serviço, essas funções são revogadas quando aplica a configuração. Ao criar agentes de serviço e conceder-lhes funções na sua configuração do Terraform, garante que estas funções não são revogadas.
- Um sistema de políticas como código que armazena cópias das suas políticas de permissão atuais num repositório de código. Se permitir Trusted Cloud conceder funções aos agentes de serviço automaticamente, essas funções aparecem na sua política de permissão real, mas não na cópia armazenada da política de permissão. Para resolver esta inconsistência, pode revogar incorretamente estas funções. Ao criar agentes de serviço e atribuir-lhes funções de forma proativa, pode ajudar a evitar a deriva entre o repositório de código e as políticas de autorização reais.
Depois de acionar a criação de agentes de serviço, tem de conceder aos agentes de serviço as funções que normalmente lhes são concedidas automaticamente. Se não o fizer, alguns serviços podem não funcionar corretamente. Isto acontece porque não são concedidas funções automaticamente aos agentes de serviço criados a pedido de um utilizador.
Antes de começar
Enable the Resource Manager API.
Compreenda os agentes de serviços.
Funções necessárias
A criação de agentes de serviço não requer autorizações de IAM. No entanto, precisa de autorizações de IAM específicas para outras tarefas nesta página:
-
Para receber a autorização de que precisa para listar os serviços disponíveis e os respetivos pontos finais, peça ao seu administrador para lhe conceder a função do IAM Visualizador de utilização de serviços (
roles/serviceusage.serviceUsageViewer
) no projeto, na pasta ou na organização para os quais quer listar os serviços disponíveis. 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.Esta função predefinida contém a autorização
serviceusage.services.list
, que é necessária para listar os serviços disponíveis e os respetivos pontos finais.Também pode receber esta autorização com funções personalizadas ou outras funções predefinidas.
-
Para receber as autorizações necessárias para conceder acesso aos agentes de serviço, peça ao seu administrador que lhe conceda as seguintes funções do IAM no projeto, na pasta ou na organização aos quais está a conceder acesso:
-
Conceda aos agentes de serviço acesso a um projeto:
Administrador de IAM do projeto (
roles/resourcemanager.projectIamAdmin
) -
Conceda aos agentes de serviço acesso a uma pasta:
Administrador da pasta (
roles/resourcemanager.folderAdmin
) -
Conceda aos agentes de serviço acesso a projetos, pastas e organizações:
Administrador da organização (
roles/resourcemanager.organizationAdmin
)
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.
Estas funções predefinidas contêm as autorizações necessárias para conceder acesso aos agentes de serviço. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para conceder acesso aos agentes de serviço:
-
Conceda aos agentes de serviço acesso a um projeto:
-
resourcemanager.projects.getIamPolicy
-
resourcemanager.projects.setIamPolicy
-
-
Conceda aos agentes de serviço acesso a uma pasta:
-
resourcemanager.folders.getIamPolicy
-
resourcemanager.folders.setIamPolicy
-
-
Conceda aos agentes de serviço acesso a uma organização:
-
resourcemanager.organizations.getIamPolicy
-
resourcemanager.organizations.setIamPolicy
-
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
-
Conceda aos agentes de serviço acesso a um projeto:
Administrador de IAM do projeto (
Identifique agentes de serviço a criar
Para identificar os agentes de serviço ao nível do projeto, da pasta e da organização que tem de pedir Trusted Cloud para criar, faça o seguinte:
Crie uma lista dos serviços que usa e dos respetivos pontos finais da API. Para ver todos os serviços disponíveis e os respetivos pontos finais, use um dos seguintes métodos:
Consola
Aceda à página Biblioteca de APIs na Trusted Cloud consola.
O ponto final da API é o nome do serviço indicado na secção Detalhes adicionais.
gcloud
O comando
gcloud services list
lista todos os serviços disponíveis para um projeto.Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
-
EXPRESSION
: opcional. Uma expressão para filtrar os resultados. Por exemplo, a seguinte expressão filtra todos os serviços cujos nomes contêmgoogleapis.com
, mas não contêmsandbox
:name ~ googleapis.com AND name !~ sandbox
Para ver uma lista de expressões de filtro, consulte
gcloud topic filters
. -
LIMIT
: opcional. O número máximo de resultados a apresentar. A predefinição éunlimited
.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud services list --available --filter='EXPRESSION' --limit=LIMIT
Windows (PowerShell)
gcloud services list --available --filter='EXPRESSION' --limit=LIMIT
Windows (cmd.exe)
gcloud services list --available --filter='EXPRESSION' --limit=LIMIT
A resposta contém os nomes e os títulos de todos os serviços disponíveis. O ponto final da API é o valor no campo
NAME
.REST
O método
services.list
da API Service Usage lista todos os serviços disponíveis para um projeto.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
-
RESOURCE_TYPE
: o tipo de recurso para o qual quer listar os serviços disponíveis. Useprojects
,folders
, ouorganizations
. -
RESOURCE_ID
: O ID do projeto, da pasta ou da organização para os quais quer listar os serviços disponíveis. Trusted CloudOs IDs dos projetos são strings alfanuméricas, comomy-project
. Os IDs das pastas e das organizações são numéricos, como123456789012
. -
PAGE_SIZE
: opcional. O número de serviços a incluir na resposta. O valor predefinido é 50 e o valor máximo é 200. Se o número de serviços for superior ao tamanho da página, a resposta contém um token de paginação que pode usar para obter a página seguinte de resultados. -
NEXT_PAGE_TOKEN
: opcional. O token de paginação devolvido numa resposta anterior deste método. Se for especificado, a lista de serviços começa onde o pedido anterior terminou.
Método HTTP e URL:
GET https://serviceusage.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/services?pageSize=PAGE_SIZE&pageToken=NEXT_PAGE_TOKEN
Para enviar o seu pedido, expanda uma destas opções:
A resposta contém os nomes e os títulos de todos os serviços disponíveis para o recurso. Se o número de serviços disponíveis for superior ao tamanho da página, a resposta também contém um token de paginação.O ponto final da API é o valor no campo
name
.-
Na página Referência do agente de serviço, pesquise cada ponto final da API.
Se o ponto final estiver listado na tabela, encontre todos os agentes de serviço para esse ponto final. Ignore todos os agentes de serviço cujo endereço de email contenha o marcador de posição
IDENTIFIER
. Esses agentes de serviço destinam-se a recursos específicos do serviço e não a projetos, pastas ou organizações.Para cada agente de serviço ao nível do projeto, da pasta e da organização, registe o seguinte:
- O formato do endereço de email do agente de serviço.
- A função que é concedida ao agente do serviço, se existir.
Acione a criação de um agente de serviço
Depois de saber que agentes de serviço tem de criar, pode pedir Trusted Cloud para os criar.
Quando pede ao Trusted Cloud para criar agentes de serviço, fornece-lhe um serviço e um recurso. Em seguida, Trusted Cloud cria todos os agentes de serviço para esse serviço e esse recurso.
gcloud
Para cada serviço para o qual precisa de criar agentes de serviço, faça o seguinte:
Reveja os endereços de email dos agentes de serviço para o serviço. Use os marcadores de posição nos endereços de email para determinar para que recursos tem de criar agentes de serviço:
Placeholder Onde criar agentes de serviço PROJECT_NUMBER
Cada projeto onde vai usar o serviço FOLDER_NUMBER
Cada pasta onde vai usar o serviço ORGANIZATION_NUMBER
Cada organização onde vai usar o serviço Crie agentes de serviço para cada recurso.
O comando
gcloud beta services identity create
cria todos os agentes de serviço para a API e o recurso especificados.Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
-
ENDPOINT
: o ponto final da API para a qual quer criar um agente de serviço, por exemplo,aiplatform.googleapis.com
. -
RESOURCE_TYPE
: o tipo de recurso para o qual quer criar um agente de serviço. Useproject
,folder
ouorganization
. -
RESOURCE_ID
: o ID do projeto, da pasta ou da organização para a qual quer criar um agente do serviço. Trusted CloudOs IDs dos projetos são strings alfanuméricas, comomy-project
. Os IDs das pastas e das organizações são numéricos, como123456789012
.Pode criar agentes de serviço para um recurso de cada vez. Se precisar de criar agentes de serviço para vários recursos, execute o comando uma vez para cada recurso.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud beta services identity create --service=ENDPOINT \ --RESOURCE_TYPE=RESOURCE_ID
Windows (PowerShell)
gcloud beta services identity create --service=ENDPOINT ` --RESOURCE_TYPE=RESOURCE_ID
Windows (cmd.exe)
gcloud beta services identity create --service=ENDPOINT ^ --RESOURCE_TYPE=RESOURCE_ID
A resposta contém o endereço de email do agente de serviço principal do serviço. Este endereço de email inclui o ID numérico do projeto, da pasta ou da organização para os quais criou agentes de serviço.
Se o serviço não tiver um agente de serviço principal, a resposta não contém um endereço de email.
Segue-se um exemplo de uma resposta para um serviço que tem um agente de serviço principal.
Service identity created: service-232332569935@gcp-sa-aiplatform.s3ns-system.iam.gserviceaccount.com
-
Opcional: registe o endereço de email do agente de serviço na resposta, se existir. Este endereço de email identifica o agente de serviço principal do serviço. Pode usar este identificador para conceder funções ao agente de serviço principal.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform. Para mais informações, consulte a Terraform documentação de referência do fornecedor.
Para cada serviço para o qual precisa de criar agentes de serviço, faça o seguinte:
Reveja os endereços de email dos agentes de serviço para o serviço. Use os marcadores de posição nos endereços de email para determinar para que recursos tem de criar agentes de serviço:
Placeholder Onde criar agentes de serviço PROJECT_NUMBER
Cada projeto onde vai usar o serviço FOLDER_NUMBER
Cada pasta onde vai usar o serviço ORGANIZATION_NUMBER
Cada organização onde vai usar o serviço Crie agentes de serviço para cada recurso. Por exemplo, o código seguinte cria todos os agentes de serviço ao nível do projeto para a AI Platform:
REST
Para cada serviço para o qual precisa de criar agentes de serviço, faça o seguinte:
Reveja os endereços de email dos agentes de serviço para o serviço. Use os marcadores de posição nos endereços de email para determinar para que recursos tem de criar agentes de serviço:
Placeholder Onde criar agentes de serviço PROJECT_NUMBER
Cada projeto onde vai usar o serviço FOLDER_NUMBER
Cada pasta onde vai usar o serviço ORGANIZATION_NUMBER
Cada organização onde vai usar o serviço Crie agentes de serviço para cada recurso.
O método
services.generateServiceIdentity
da API Service Usage cria todos os agentes de serviço para a API e o recurso especificados.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
-
RESOURCE_TYPE
: o tipo de recurso para o qual quer criar um agente de serviço. Useprojects
,folders
, ouorganizations
. -
RESOURCE_ID
: o ID do projeto, da pasta ou da organização para os quais quer criar agentes de serviço. Trusted CloudOs IDs dos projetos são strings alfanuméricas, comomy-project
. Os IDs das pastas e das organizações são numéricos, como123456789012
.Pode criar agentes de serviço para um recurso de cada vez. Se precisar de criar agentes de serviço para vários recursos, envie um pedido para cada recurso.
-
ENDPOINT
: o ponto final da API para a qual quer criar um agente de serviço, por exemplo,aiplatform.googleapis.com
.
Método HTTP e URL:
POST https://serviceusage.googleapis.com/v1beta1/RESOURCE_TYPE/RESOURCE_ID/services/ENDPOINT:generateServiceIdentity
Para enviar o seu pedido, expanda uma destas opções:
A resposta contém umOperation
que indica o estado da sua solicitação. Para verificar o estado da operação, use o métodooperations.get
.As operações concluídas contêm o endereço de email do agente de serviço principal do serviço. Este endereço de email inclui o ID numérico do projeto, da pasta ou da organização para os quais criou agentes de serviço.
Se o serviço não tiver um agente de serviço principal, a resposta não contém um endereço de email.
Segue-se um exemplo de uma operação concluída para um serviço que tem um agente de serviço principal.
{ "name": "operations/finished.DONE_OPERATION", "done": true, "response": { "@type": "type.googleapis.com/google.api.serviceusage.v1beta1.ServiceIdentity", "email": "service-232332569935@gcp-sa-aiplatform.s3ns-system.iam.gserviceaccount.com", "uniqueId": "112245693826560101651" } }
-
Opcional: registe o endereço de email do agente de serviço na resposta, se existir. Este endereço de email identifica o agente de serviço principal do serviço. Pode usar este identificador para conceder funções ao agente de serviço principal.
Conceda funções a agentes do serviço
Depois de Trusted Cloud criar os agentes de serviço necessários para os seus projetos, pastas e organizações, use os endereços de email dos agentes de serviço para lhes conceder funções.
Se pediu Trusted Cloud para criar agentes de serviço, tem de conceder a esses agentes de serviço as funções que normalmente lhes são concedidas automaticamente. Caso contrário, alguns serviços podem não funcionar corretamente. Isto acontece porque não são concedidas automaticamente funções aos agentes de serviço criados a pedido de um utilizador.
Para saber como identificar funções concedidas automaticamente, consulte Identifique agentes de serviço para criar.
Encontre o endereço de email do agente de serviço
Para encontrar o endereço de email de um agente de serviços, faça o seguinte:
gcloud
Se ainda não o fez, encontre o formato do endereço de email do agente de serviço. Este formato está documentado na referência do agente de serviço.
Substitua todos os marcadores de posição no endereço de email pelo número do projeto, da pasta ou da organização correspondente.
Em alternativa, se o agente de serviço for um agente de serviço principal, pode obter o respetivo endereço de email acionando a criação do agente de serviço para o serviço. O comando para acionar a criação do agente de serviço devolve o endereço de email do agente de serviço principal.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform. Para mais informações, consulte a Terraform documentação de referência do fornecedor.
Se ainda não o fez, encontre o formato do endereço de email do agente de serviço. Este formato está documentado na referência do agente de serviço.
Substitua todos os marcadores de posição no endereço de email por expressões que façam referência ao número do projeto, da pasta ou da organização adequado.
Por exemplo, considere a seguinte situação:
- O formato do endereço de email é
service-PROJECT_NUMBER@gcp-sa-aiplatform-cc.s3ns-system.iam.gserviceaccount.com
- O agente de serviço é para um projeto etiquetado como
default
Neste caso, o endereço de email do agente de serviço é o seguinte:
service-${data.google_project.default.number}@gcp-sa-aiplatform-cc.s3ns-system.iam.gserviceaccount.com
- O formato do endereço de email é
Em alternativa, se um agente de serviço for o agente de serviço principal de um serviço, pode obter o respetivo endereço de email a partir do atributo email
do recurso google_project_service_identity
.
Por exemplo, se tiver um bloco google_project_service_identity
com a etiqueta default
, pode obter o endereço de email do agente de serviço principal do serviço através da seguinte expressão:
${google_project_service_identity.default.email}
REST
Se ainda não o fez, encontre o formato do endereço de email do agente de serviço. Este formato está documentado na referência do agente de serviço.
Substitua todos os marcadores de posição no endereço de email pelo número do projeto, da pasta ou da organização correspondente.
Em alternativa, se o agente de serviço for um agente de serviço principal, pode obter o respetivo endereço de email acionando a criação do agente de serviço para o serviço. O comando para acionar a criação do agente de serviço devolve o endereço de email do agente de serviço principal.
Conceda uma função ao agente do serviço
Depois de encontrar o endereço de email do agente de serviço, pode conceder-lhe uma função tal como concederia uma função a qualquer outro principal.
Consola
Na Trusted Cloud consola, aceda à página IAM.
Selecione um projeto, uma pasta ou uma organização.
Clique em
Conceder acesso e, de seguida, introduza o endereço de email do agente de serviços.Selecione uma função a conceder na lista pendente.
Opcional: adicione uma condição à função.
Clique em Guardar. A função é concedida ao agente do serviço no recurso.
gcloud
O comando
add-iam-policy-binding
permite-lhe conceder rapidamente uma função a um principal.
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
-
RESOURCE_TYPE
: O tipo de recurso ao qual quer gerir o acesso. Useprojects
,resource-manager folders
ouorganizations
. -
RESOURCE_ID
: o ID do projeto, da pasta ou da organização. Trusted Cloud Os IDs dos projetos são alfanuméricos, comomy-project
. Os IDs das pastas e das organizações são numéricos, como123456789012
. -
PRINCIPAL
: um identificador do principal ou membro, que normalmente tem o seguinte formato:PRINCIPAL_TYPE:ID
. Por exemplo,principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com
ouprincipalSet://iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com
. Para ver uma lista completa dos valores quePRINCIPAL
pode ter, consulte o artigo Identificadores principais. -
ROLE_NAME
: o nome da função que quer revogar. Use um dos seguintes formatos:- Funções predefinidas:
roles/SERVICE.IDENTIFIER
- Funções personalizadas ao nível do projeto:
projects/PROJECT_ID/roles/IDENTIFIER
- Funções personalizadas ao nível da organização:
organizations/ORG_ID/roles/IDENTIFIER
Para ver uma lista de funções predefinidas, consulte o artigo Compreender as funções.
- Funções predefinidas:
-
CONDITION
: A condição a adicionar à associação de funções. Se não quiser adicionar uma condição, use o valorNone
. Para mais informações sobre as condições, consulte a vista geral das condições.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID \ --member=PRINCIPAL --role=ROLE_NAME \ --condition=CONDITION
Windows (PowerShell)
gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID ` --member=PRINCIPAL --role=ROLE_NAME ` --condition=CONDITION
Windows (cmd.exe)
gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID ^ --member=PRINCIPAL --role=ROLE_NAME ^ --condition=CONDITION
A resposta contém a política de IAM atualizada.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform. Para mais informações, consulte a Terraform documentação de referência do fornecedor.
REST
Para conceder uma função com a API REST, use o padrão de leitura-modificação-escrita:
Leia a política de permissão atual chamando
getIamPolicy()
.O método
getIamPolicy
da API Resource Manager obtém a política de autorização de um projeto, uma pasta ou uma organização.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
API_VERSION
: a versão da API a usar. Para projetos e organizações, usev1
. Para pastas, usev2
.RESOURCE_TYPE
: o tipo de recurso cuja política quer gerir. Use o valorprojects
,folders
ouorganizations
.RESOURCE_ID
: o ID do Trusted Cloud projeto, da organização ou da pasta. Os IDs dos projetos são strings alfanuméricas, comomy-project
. Os IDs das pastas e das organizações são numéricos, como123456789012
.POLICY_VERSION
: a versão da política a ser devolvida. Os pedidos devem especificar a versão da política mais recente, que é a versão 3 da política. Consulte o artigo Especificar uma versão da política ao obter uma política para ver detalhes.
Método HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:getIamPolicy
Corpo JSON do pedido:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar o seu pedido, expanda uma destas opções:
A resposta contém a política de autorização do recurso. Por exemplo:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/owner", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }
Edite a política de autorização do recurso 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. Por exemplo, pode adicionar uma nova associação de funções, remover uma associação de funções existente ou adicionar ou remover responsáveis de uma associação de funções existente.
Escreva a política de permissão atualizada chamando
setIamPolicy()
.O método
setIamPolicy
da API Resource Manager define a política no pedido como a nova política de permissão para o projeto, a pasta ou a organização.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
API_VERSION
: a versão da API a usar. Para projetos e organizações, usev1
. Para pastas, usev2
.RESOURCE_TYPE
: o tipo de recurso cuja política quer gerir. Use o valorprojects
,folders
ouorganizations
.RESOURCE_ID
: o ID do Trusted Cloud projeto, da organização ou da pasta. Os IDs dos projetos são strings alfanuméricas, comomy-project
. Os IDs das pastas e das organizações são numéricos, como123456789012
.-
POLICY
: Uma representação JSON da política que quer definir. Para mais informações sobre o formato de uma política, consulte a referência de políticas.
Método HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:setIamPolicy
Corpo JSON do pedido:
{ "policy": POLICY }
Para enviar o seu pedido, expanda uma destas opções:
A resposta contém a política de permissão atualizada.
O que se segue?
- Veja uma lista de todos os agentes de serviço.
- Explore outras formas de conceder funções a responsáveis.
- Saiba como criar contas de serviço geridas pelo utilizador, que podem atuar como identidades para as suas cargas de trabalho.
- Saiba mais acerca das práticas recomendadas para usar o Terraform no Trusted Cloud.
- Explore todos os Trusted Cloud exemplos do Terraform.