Esta página descreve como compartilhar os tipos e provedores de tipos do seu projeto com outros projetos. Por exemplo, suponha que você tenha um projeto responsável por manter os provedores de tipos pré-aprovados da sua empresa. Você quer ter a capacidade de compartilhar os provedores de tipos desse projeto com outros projetos, bem como usar o projeto como um repositório central de tipos. Da mesma forma, também é possível usar esse método para compartilhar tipos compostos entre projetos.
Para configurar o acesso, o proprietário do projeto a que pertence o tipo precisará conceder o papel deploymentmanager.typeViewer
(Beta) à conta de serviço do projeto que pretende consumir os tipos. Também é necessário conceder esse papel aos usuários que pretendam visualizar e listar tipos de outro projeto.
Antes de começar
- Para usar os exemplos de linha de comando deste guia, instale a ferramenta de linha de comando "gcloud".
- Para usar os exemplos de API deste guia, configure o acesso de API.
- Leia sobre as configurações do Deployment Manager.
- Leia sobre Tipos.
- Leia a documentação do gerenciamento de identidade e acesso (IAM, na sigla em inglês).
Limitações
Estas são as restrições de uso desse recurso:
- O papel
deploymentmanager.typeViewer
concede permissões a todos os tipos no projeto específico. Não é possível limitar o compartilhamento a tipos individuais. - Não é possível conceder esse papel a
allAuthenticatedUsers
ouallUsers
.
Como conceder acesso a um projeto para a utilização de tipos
Para conceder acesso a tipos que pertençam a outros projetos, o proprietário do projeto a que pertencem os tipos em questão precisa conceder o papel deploymentmanager.typeViewer
à Conta de serviço de APIs do Google do projeto que pretende consumir os tipos.
- Acesse a página do IAM no console do Google Cloud do projeto que consumir os tipos.
- Caso solicitado, selecione o projeto na lista.
Procure a conta de serviço das APIs do Google, que tem o endereço de e-mail no formato a seguir:
[PROJECT_NUMBER]@cloudservices.gserviceaccount.com
Anote o endereço de e-mail acima. Em seguida, o proprietário do projeto onde os tipos desejados estão ativos pode conceder o papel
roles/deploymentmanager.typeViewer
à conta de serviço das APIs do Google.Console
- Ainda no console do Google Cloud, acesse a página do IAM do projeto que contenha os tipos que você quer compartilhar.
- Selecione o projeto na lista de projetos.
- Clique no botão Adicionar para incluir um novo membro.
- Na caixa Membros, digite o endereço de e-mail da conta de serviço.
- Expanda o menu suspenso Papéis e selecione Outro > Visualizador de tipos do Deployment Manager (beta).
- Clique em Adicionar para incluir a conta.
gcloud
Com a Google Cloud CLI, adicione uma vinculação à política do IAM para o projeto:
gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/deploymentmanager.typeViewer
em que:
[PROJECT_ID]
é o ID do projeto com imagens a serem compartilhadas;[SERVICE_ACCOUNT_EMAIL]
é o e-mail da conta de serviço no projeto com que você pretende compartilhar os tipos.
Exemplo:
gcloud projects add-iam-policy-binding database-images \ --member serviceAccount:123456789012@cloudservices.gserviceaccount.com \ --role roles/deploymentmanager.typeViewer
API
Na API, faça uma solicitação
POST
para o seguinte URL, em que[PROJECT_ID]
é o ID do projeto que contém os tipos que você quer compartilhar.POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
O corpo da solicitação precisa conter a lista de vinculações que você quer aplicar a esse projeto. É preciso que o papel
roles/deploymentmanager.typeViewer
faça parte da vinculação. Por exemplo:{ "policy": { "version": "0", "bindings": [ { "role": "roles/owner", "members": [ "user:example@gmail.com" ] }, { "role": "roles/deploymentmanager.typeViewer", "members": [ "serviceAccount:123456789012@cloudservices.gserviceaccount.com" ] } ] }
}
Como usar tipos de outros projetos na configuração
Após conseguir o acesso aos tipos, você pode especificar o tipo nas configurações usando a sintaxe. Para tipos compostos:
type: [PROJECT_ID]/composite:[TYPE]
Para provedores de tipos:
type: [PROJECT_ID]/[TYPE]:[COLLECTION]
Onde:
[PROJECT_ID]
é o ID do projeto em que está o tipo;[TYPE]
é o nome do provedor de tipos ou do tipo composto;[COLLECTION]
é o recurso específico que você está criando. Isso é aplicável somente aos tipos básicos. Para mais informações sobre como especificar os tipos básicos, leia Como chamar um provedor de tipos em uma configuração.
Por exemplo, se o ID do projeto for my-type-repository
, será possível fornecer a seguinte especificação de tipo:
resources: - name: a-special-vm type: my-type-repository/composite:autoscaled-igm properties: ...
Como conceder a capacidade de listar e visualizar tipos a usuários
A concessão do papel deploymentmanager.typeViewer
à conta de serviço do projeto permite que o projeto implante esses tipos nas suas configurações, mas não permite que os usuários vejam ou listem esses tipos. Se você quiser conceder a usuários individuais a capacidade de visualizar tipos, você precisa conceder o papel deploymentmanager.typeViewer
a cada usuário.
Por exemplo, para que Jane execute o comando gcloud beta deployment-manager types list --project another-project
de um projeto que não seja dela, é preciso que o papel deploymentmanager.typeViewer
lhe seja concedido pelo proprietário do another-project
.
Usando a CLI gcloud, é possível conceder a Jane o papel da seguinte maneira:
gcloud projects add-iam-policy-binding another-project \
--member user:jane@gmail.com --role deploymentmanager.typeViewer
Para instruções detalhadas sobre como adicionar e remover papéis de usuários, leia a documentação sobre como conceder, alterar e revogar acesso a membros do projeto.
Próximas etapas
- Leia sobre outros papéis do IAM que você pode conceder.
- Saiba mais sobre as contas de serviço.