Esta página descreve como configurar o seu projeto para que o Deployment Manager possa criar instâncias de máquinas virtuais do Compute Engine através de imagens do sistema operativo pertencentes a outro projeto.
Por exemplo, suponha que tem um projeto denominado Awesome Project no qual o Deployment Manager cria e gere instâncias de VMs. Agora, vamos supor que precisa de usar imagens privadas que pertencem a um projeto diferente denominado Database Images.
Para conceder acesso a estas imagens, o proprietário de Database Images tem de conceder a função do IAM roles/compute.imageUser
à conta de serviço das APIs Google do Awesome Project. Em seguida, o Awesome Project pode usar imagens do projeto Database Images.
Também pode usar este processo para conceder acesso a imagens de outros projetos a grupos de instâncias geridos.
Antes de começar
- Se quiser usar os exemplos de linhas de comando neste guia, instale a ferramenta de linhas de comando`gcloud`.
- Se quiser usar os exemplos de API neste guia, configure o acesso à API.
- Leia acerca das configurações do Deployment Manager.
- Leia acerca das imagens privadas do Compute Engine.
- Leia a documentação sobre a gestão de identidade e de acesso (IAM).
- Leia acerca das funções de IAM do Deployment Manager, em particular, a função
roles/compute.imageUser
.
Limitações
Seguem-se as restrições para usar esta funcionalidade:
- Tem de conceder a função
compute.imageUser
ao nível do projeto à conta de serviço das APIs Google do projeto. - A atribuição da função
compute.imageUser
concede autorizações a todas as imagens no projeto específico. Não é possível partilhar imagens específicas. - Tem de conceder esta função a utilizadores específicos e não a
allAuthenticatedUsers
nem aallUsers
.
Conceder acesso a imagens
Para conceder acesso a imagens que pertencem a outro projeto, o proprietário do projeto que detém as imagens tem de conceder acesso à conta de serviço das APIs Google do projeto que quer usar as imagens.
- Aceda à página IAM na Google Cloud consola do projeto que precisa de acesso a imagens privadas pertencentes a outro projeto.
- Se lhe for pedido, selecione o seu projeto na lista. Lembre-se de selecionar o projeto que precisa de acesso a imagens armazenadas noutro projeto.
Procure a conta de serviço das APIs Google, que tem um endereço de email no seguinte formato:
[PROJECT_NUMBER]@cloudservices.gserviceaccount.com
Tome nota do endereço de email acima. Em seguida, o proprietário do projeto onde as imagens desejadas estão alojadas pode conceder à conta de serviço das APIs Google a função
roles/compute.imageUser
.Consola
- Enquanto ainda estiver na consola Google Cloud , aceda à página IAM do projeto que contém as imagens às quais quer aceder.
- Selecione o projeto na lista de projetos.
- Clique no botão Adicionar para adicionar um novo membro.
- Na caixa Membros, introduza o endereço de email da conta de serviço.
- Expanda o menu pendente Funções e selecione Compute Engine > Utilizador de imagens do Compute.
- Clique em Adicionar para adicionar a conta.
gcloud
Com a CLI do Google Cloud, adicione uma associação à política do IAM para o projeto:
gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/compute.imageUser
where:
[PROJECT_ID]
é o ID do projeto que contém as imagens que quer partilhar.[SERVICE_ACCOUNT_EMAIL]
é o email da conta de serviço.
Por exemplo:
gcloud projects add-iam-policy-binding database-images \ --member serviceAccount:123456789012@cloudservices.gserviceaccount.com \ --role roles/compute.imageUser
API
Na API, faça um pedido
POST
ao seguinte URL, onde[PROJECT_ID]
é o ID do projeto que contém as imagens que quer partilhar.POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
O corpo do pedido deve conter a lista de associações que quer aplicar a este projeto. A função
roles/compute.imageUser
deve fazer parte da associação. Por exemplo:{ "policy": { "version": "0", "bindings": [ { "role": "roles/owner", "members": [ "user:example@gmail.com" ] }, { "role": "roles/compute.imageUser", "members": [ "serviceAccount:123456789012@cloudservices.gserviceaccount.com" ] } ] }
}
Usar imagens de outros projetos na sua configuração
Depois de um projeto ter acesso concedido a imagens de outro projeto, os utilizadores do projeto podem usar as imagens especificando o ID do projeto ao qual as imagens pertencem nos seus modelos ou configurações:
image: projects/[PROJECT_ID]/global/images/[IMAGE_NAME]
Por exemplo, se o ID do projeto de imagem for database-images
, pode fornecer o seguinte URI de imagem na sua configuração:
resources: - name: a-special-vm type: compute.v1.instances properties: machineType: zones/us-central1-a/machineTypes/f1-micro image: projects/database-images/global/images/example-database-image ...
Depois de adicionar a imagem, conclua a criação da configuração e, em seguida, implemente-a.
O que se segue?
- Saiba mais sobre a partilha de imagens.
- Saiba mais acerca das imagens do Compute Engine.
- Leia acerca de outras funções de IAM que pode conceder.
- Saiba mais sobre as contas de serviço.