Faça a gestão do acesso a imagens personalizadas


Para permitir que os utilizadores criem, eliminem, usem ou partilhem as suas imagens personalizadas, tem de conceder-lhes as funções de gestão de identidades e acessos (IAM) adequadas. Este documento descreve as autorizações de IAM necessárias para criar e gerir imagens personalizadas, bem como a forma de as conceder aos utilizadores.

Para obter informações gerais sobre a concessão de acesso a recursos do Compute Engine, consulte o artigo Gerir o acesso a recursos do Compute Engine. Para informações sobre o IAM, leia a documentação do IAM.

Antes de começar

  • Leia a documentação do IAM.
  • Leia acerca das funções IAM do Compute Engine, em particular, a função de utilizador de imagens do Compute Engine (roles/compute.imageUser).
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    2. Set a default region and zone.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.

Funções necessárias

Para receber as autorizações de que precisa para gerir o acesso a imagens personalizadas, peça ao seu administrador que lhe conceda as seguintes funções do IAM:

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 gerir o acesso a imagens personalizadas. 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 gerir o acesso a imagens personalizadas:

  • Para conceder aos utilizadores ou às contas de serviço as autorizações necessárias para criar e partilhar imagens personalizadas:
    • resourcemanager.projects.getIamPolicy no projeto
    • resourcemanager.projects.setIamPolicy no projeto
  • Para conceder aos utilizadores ou às contas de serviço as autorizações necessárias para eliminar imagens personalizadas:
    • resourcemanager.projects.getIamPolicy no projeto
    • resourcemanager.projects.setIamPolicy no projeto
    • compute.images.getIamPolicy na imagem
    • compute.images.setIamPolicy na imagem
  • Para revogar o acesso de um utilizador ou de uma conta de serviço a imagens personalizadas:
    • resourcemanager.projects.getIamPolicy no projeto
    • resourcemanager.projects.setIamPolicy no projeto
  • Para criar uma instância com uma imagem partilhada:
    • compute.instances.create no projeto
    • Para usar uma imagem personalizada para criar a VM: compute.images.useReadOnly na imagem
    • Para usar um instantâneo para criar a VM: compute.snapshots.useReadOnly no instantâneo
    • Para usar um modelo de instância para criar a VM: compute.instanceTemplates.useReadOnly no modelo de instância
    • Para atribuir uma rede antiga à VM: compute.networks.use no projeto
    • Para especificar um endereço IP estático para a VM: compute.addresses.use no projeto
    • Para atribuir um endereço IP externo à VM quando usar uma rede antiga: compute.networks.useExternalIp no projeto
    • Para especificar uma sub-rede para a VM: compute.subnetworks.use no projeto ou na sub-rede escolhida
    • Para atribuir um endereço IP externo à VM quando usar uma rede VPC: compute.subnetworks.useExternalIp no projeto ou na sub-rede escolhida
    • Para definir os metadados da instância de VM para a VM: compute.instances.setMetadata no projeto
    • Para definir etiquetas para a VM: compute.instances.setTags na VM
    • Para definir etiquetas para a VM: compute.instances.setLabels na VM
    • Para definir uma conta de serviço para a VM usar: compute.instances.setServiceAccount na VM
    • Para criar um novo disco para a VM: compute.disks.create no projeto
    • Para anexar um disco existente no modo de leitura ou leitura/escrita: compute.disks.use no disco
    • Para anexar um disco existente no modo de leitura: compute.disks.useReadOnly no disco

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Limitações

Nas imagens, não pode conceder funções ao tipo de membro especial allUsers.

Dê autorização para criar imagens personalizadas

Pode dar aos utilizadores a capacidade de criar imagens personalizadas na sua organização ou projeto.

O Compute Engine oferece a função de administrador de armazenamento do Compute (roles/compute.storageAdmin) predefinida que pode atribuir aos utilizadores para que possam criar, eliminar e gerir recursos relacionados com o armazenamento, incluindo imagens, discos e capturas de ecrã. Se precisar de uma função que permita apenas a criação de imagens, tem de criar uma função personalizada. No seu papel personalizado, inclua as seguintes autorizações:

  • compute.images.create para criar novas imagens
  • compute.images.list para listar imagens no projeto
  • compute.disks.use se a imagem for criada a partir de um disco
  • compute.disks.list se os utilizadores precisarem de listar todos os discos num projeto

Se conceder a um utilizador a capacidade de criar imagens personalizadas ao nível da organização, o utilizador pode criar imagens personalizadas para qualquer projeto na organização.

Consola

  1. Na Google Cloud consola, aceda à página IAM do projeto ou da organização.

    Aceda ao IAM

  2. Para adicionar um novo membro, clique em Conceder acesso.

  3. No campo Novos membros, introduza o endereço de email da identidade à qual quer conceder acesso.

    Por exemplo:

    • Email da Conta Google: test-user@gmail.com
    • Grupo Google: admins@googlegroups.com
    • Identidade de um fornecedor de identidade externo: principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • Conta de serviço: server@example.gserviceaccount.com
    • Domínio do Google Workspace: example.com
  4. Na lista Selecionar uma função, selecione Compute Engine > Compute Storage Admin ou selecione uma função personalizada, se tiver criado uma.

  5. Opcional: para controlar ainda mais o acesso dos utilizadores aos Google Cloud recursos, adicione uma associação de funções condicional.

  6. Guarde as alterações.

gcloud

Para conceder a função roles/compute.storageAdmin ao nível da organização, use o comando gcloud organizations add-iam-policy-binding:

gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member='MEMBER' \
    --role='roles/compute.storageAdmin'

Para conceder a função roles/compute.storageAdmin ao nível do projeto, use o comando gcloud projects add-iam-policy-binding:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='MEMBER' \
    --role='roles/compute.storageAdmin'

Substitua o seguinte:

  • ORGANIZATION_ID ou PROJECT_ID: o ID da organização ou o ID do projeto, por exemplo, my-organization-1 ou my-project-1
  • MEMBER: uma identidade válida à qual quer conceder a função

    Por exemplo:

    • Email da Conta Google: user:user@gmail.com
    • Grupo Google: group:admins@googlegroups.com
    • Identidade de um fornecedor de identidade externo: principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • Conta de serviço: serviceAccount:server@example.gserviceaccount.com
    • Domínio do Google Workspace: domain:example.com

REST

  1. Leia a política existente com o método getIamPolicy do recurso. Para projetos, use o método projects.getIamPolicy.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
    

    Substitua PROJECT_ID pelo ID do projeto, por exemplo, my-project-1.

    Para organizações, use o método organizations.getIamPolicy.

    POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:getIamPolicy
    

    Substitua ORGANIZATION_ID pelo ID da organização. Por exemplo, 123456578920.

    O Compute Engine devolve a política atual na resposta.

  2. Para adicionar ou remover membros e as respetivas funções associadas, edite a política com um editor de texto. Use o seguinte formato para adicionar membros:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com

    Por exemplo, para conceder a função roles/compute.storageAdmin a group:admins@example.com, adicione a seguinte associação à política:

    {
     "members": [
       "group:admins@example.com"
     ],
     "role":"roles/compute.storageAdmin"
    }
    
  3. Escreva a política atualizada através do método setIamPolicy.

    Por exemplo, para definir uma política ao nível do projeto, use o método project.setIamPolicy. No corpo do pedido, indique a política de IAM atualizada do passo anterior.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
    

    Substitua PROJECT_ID pelo ID do projeto.

Conceda autorizações para eliminar imagens personalizadas

Consoante as suas necessidades, pode conceder aos utilizadores autorização para fazer o seguinte:

  • Elimine uma imagem específica
  • Elimine imagens pertencentes a um projeto específico
  • Elimine imagens de qualquer projeto numa organização

A concessão de autorização ao nível do projeto permite que os utilizadores eliminem todas as imagens pertencentes a esse projeto. A concessão de autorização ao nível da organização permite ao utilizador eliminar quaisquer imagens pertencentes a essa organização, independentemente do projeto.

O Compute Engine oferece a função predefinida Administrador de armazenamento do Compute (roles/compute.storageAdmin) que pode atribuir aos utilizadores para que possam criar, eliminar e gerir recursos relacionados com o armazenamento, incluindo imagens, discos e capturas de ecrã. Se precisar de uma função que permita apenas a eliminação de imagens, tem de criar uma função personalizada. Na sua função personalizada, inclua as seguintes autorizações:

  • compute.images.delete para eliminar imagens
  • compute.images.list se os utilizadores precisarem de listar imagens no projeto ou na organização
  • compute.images.get para receber as imagens

Consola

Para conceder autorização para eliminar imagens específicas, faça o seguinte:

  1. Na Google Cloud consola, aceda à página Imagens.

    Aceder a Imagens

  2. Selecione as imagens às quais quer conceder autorizações.

  3. Para expandir a coluna de autorizações, clique em Mostrar painel de informações.

  4. Para adicionar um ou mais membros, clique em Adicionar principal.

  5. No campo Novos principais, introduza o endereço de email da identidade com a qual quer partilhar a imagem.

    Por exemplo:

    • Email da Conta Google: test-user@gmail.com
    • Grupo Google: admins@googlegroups.com
    • Identidade de um fornecedor de identidade externo: principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • Conta de serviço: server@example.gserviceaccount.com
    • Domínio do Google Workspace: example.com
  6. Na lista Função, passe o ponteiro do rato sobre Compute Engine e selecione Administrador de armazenamento ou selecione uma função personalizada na lista Personalizado.

  7. Opcional: para controlar ainda mais o acesso dos utilizadores aos Google Cloud recursos, adicione uma associação de funções condicional.

  8. Guarde as alterações.

Para conceder autorização para eliminar imagens de um projeto ou uma organização, faça o seguinte:

  1. Aceda à página IAM do projeto ou da organização.

    Aceda ao IAM

  2. Clique em Conceder acesso.

  3. No campo Novos membros, introduza o endereço de email da identidade à qual quer conceder acesso. Por exemplo:

    • Email da Conta Google: test-user@gmail.com
    • Grupo Google: admins@googlegroups.com
    • Identidade de um fornecedor de identidade externo: principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • Conta de serviço: server@example.gserviceaccount.com
    • Domínio do Google Workspace: example.com
  4. Na lista Função, passe o ponteiro do rato sobre Compute Engine e selecione Administrador de armazenamento ou selecione uma função personalizada na lista Personalizado.

  5. Opcional: para controlar ainda mais o acesso dos utilizadores aos Google Cloud recursos, adicione uma associação de funções condicional.

  6. Guarde as alterações.

gcloud

Para conceder autorizações para eliminar imagens ao nível da organização, use o comando gcloud organizations add-iam-policy-binding :

gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member='MEMBER' \
    --role='ROLE'

Para conceder autorizações para eliminar imagens ao nível do projeto, use o gcloud projects add-iam-policy-binding comando:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='MEMBER' \
    --role='ROLE'

Para conceder autorizações para eliminar uma imagem específica, use o gcloud compute images add-iam-policy-bindingcomando:

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='MEMBER' \
    --role='ROLE'

Substitua o seguinte:

  • ORGANIZATION_ID ou PROJECT_ID ou IMAGE_NAME: o ID numérico de 12 dígitos da organização, o ID do projeto ou o nome da imagem, por exemplo, 123456578920, my-project-1 ou my-custom-image
  • MEMBER: uma identidade válida à qual quer conceder a função

    Por exemplo:

    • Email da Conta Google: user:user@gmail.com
    • Grupo Google: group:admins@googlegroups.com
    • Identidade de um fornecedor de identidade externo: principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • Conta de serviço: serviceAccount:server@example.gserviceaccount.com
    • Domínio do Google Workspace: domain:example.com
  • ROLE: a função a atribuir a esta identidade, por exemplo, a função roles/compute.storageAdmin ou uma função personalizada, como roles/customImageDeletionRole

REST

  1. Leia a política existente com o getIamPolicymétodo respetivo do recurso. Para projetos, use o projects.getIamPolicy método:

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
    

    Substitua PROJECT_ID pelo ID do projeto.

    Para organizações, use o método organizations.getIamPolicy:

    POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:getIamPolicy
    

    Substitua ORGANIZATION_ID pelo ID da organização numérico de 12 dígitos.

    Para uma imagem específica, use o método images.getIamPolicy:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto
    • IMAGE_NAME: o nome da imagem

    O Compute Engine devolve a política atual na resposta.

  2. Para adicionar ou remover membros e as respetivas funções associadas, pode editar a política com um editor de texto. Use o seguinte formato para adicionar membros:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com

    Por exemplo, para conceder a função roles/compute.storageAdmin a user:test-email@example.com, adicione a seguinte associação à política:

    {
     "members": [
       "user:test-email@example.com"
     ],
     "role":"roles/compute.storageAdmin"
    }
    
  3. Escreva a política atualizada através do método setIamPolicy.

    Por exemplo, para definir uma política ao nível do projeto, use o método project.setIamPolicy. No corpo do pedido, indique a política de IAM atualizada do passo anterior.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
    

    Substitua PROJECT_ID pelo ID do projeto.

Conceda autorizações para partilhar imagens personalizadas numa organização

Se o seu projeto pertencer a uma organização, esta pode ter vários outros projetos com diferentes níveis de acesso a outros projetos. Quando cria imagens personalizadas, pode partilhá-las com outros utilizadores de outros projetos na organização.

O Compute Engine oferece as seguintes funções IAM predefinidas que pode usar para a gestão de imagens:

  • Utilizador de imagens do Compute (roles/compute.imageUser): autorização para listar, ler e usar imagens nos seus pedidos, sem ter outras autorizações na imagem
  • Administrador de armazenamento do Compute (roles/compute.storageAdmin): autorizações para criar, modificar e eliminar discos, imagens e instantâneos

Em alternativa, também pode criar a sua própria função de IAM personalizada.

Como prática recomendada, recomendamos que mantenha todas as suas imagens personalizadas num único projeto dedicado ao alojamento destas imagens. Esta prática melhora a gestão dessas imagens e permite-lhe conceder acesso a equipas específicas apenas às imagens de que precisam. Também pode conceder às equipas acesso a todo o projeto de imagens, mas não o recomendamos, uma vez que o acesso das equipas a todo o projeto de imagens viola o princípio do menor privilégio.

O exemplo abaixo mostra como adicionar um grupo para que os utilizadores desse grupo tenham acesso à imagem.

Consola

  1. Na Google Cloud consola, aceda à página Imagens.

    Aceder a Imagens

  2. Selecione a imagem que quer partilhar com outros utilizadores.

  3. Para expandir a coluna de autorizações, clique em Mostrar painel de informações.

  4. Para adicionar um ou mais membros, clique em Adicionar principal.

  5. No campo Novos principais, introduza o endereço de email da identidade com a qual quer partilhar a imagem.

    Por exemplo:

    • Email da Conta Google: test-user@gmail.com
    • Grupo Google: admins@googlegroups.com
    • Identidade de um fornecedor de identidade externo: principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • Conta de serviço: server@example.gserviceaccount.com
    • Domínio do Google Workspace: example.com
  6. Na lista Função, mantenha o ponteiro sobre Compute Engine e selecione Utilizador de imagens ou Administrador de armazenamento, ou selecione uma função personalizada.

  7. Opcional: para controlar ainda mais o acesso dos utilizadores aos Google Cloud recursos, adicione uma associação de funções condicional.

  8. Guarde as alterações.

Para permitir que os utilizadores iniciem imagens personalizadas partilhadas a partir da Google Cloud consola, conceda aos utilizadores a função IAM de leitor (roles/viewer) para o projeto de imagem. A concessão desta função ajuda a garantir que as imagens partilhadas aparecem na lista de seleção de imagens.

  1. Na Google Cloud consola, aceda à página IAM.

    Aceda ao IAM

  2. Clique em Conceder acesso.

  3. No campo Novos principais, introduza o endereço de email da identidade com a qual quer partilhar a imagem. Por exemplo:

    • Email da Conta Google: test-user@gmail.com
    • Grupo Google: admins@googlegroups.com
    • Identidade de um fornecedor de identidade externo: principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • Conta de serviço: server@example.gserviceaccount.com
    • Domínio do Google Workspace: example.com
  4. Na lista Função, coloque o cursor do rato sobre Projeto e selecione Visualizador.

  5. Opcional: para controlar ainda mais o acesso dos utilizadores aos Google Cloud recursos, adicione uma associação de funções condicional.

  6. Guarde as alterações.

gcloud

Para atualizar a política de IAM de uma imagem específica, use o comando gcloud compute images add-iam-policy-binding:

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='MEMBER' \
    --role='ROLE'

Substitua o seguinte:

  • IMAGE_NAME: o nome da imagem, por exemplo, custom-centos-8
  • MEMBER: uma identidade válida à qual quer conceder a função

    Por exemplo:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • ROLE: a função à qual atribuir esta identidade, como roles/compute.imageUser, roles/compute.storageAdmin ou uma função personalizada

Opcionalmente, para permitir que os utilizadores vejam estas imagens partilhadas nos respetivos images.list pedidos, conceda aos utilizadores a função de IAM de leitor (roles/viewer) para o projeto de imagens através do comando gcloud projects add-iam-policy-binding. Se não precisar que os utilizadores possam ver a lista de imagens partilhadas, pode ignorar este passo.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='MEMBER' \
    --role='roles/viewer'

REST

  1. Leia a política existente com o método getIamPolicy do recurso. Por exemplo, para obter a política sobre uma imagem específica, use o método images.getIamPolicy:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto ao qual esta imagem pertence
    • IMAGE_NAME: o nome da imagem

    O Compute Engine devolve a política atual na resposta.

  2. Para adicionar ou remover membros e as respetivas funções associadas, edite a política com um editor de texto. Use o seguinte formato para adicionar membros:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com

    Por exemplo, para conceder roles/compute.imageUser a test-email@example.com, adicione a seguinte associação à política:

    {
     "members": [
       "user:test-email@example.com"
     ],
     "role":"roles/compute.imageUser"
    }
    
  3. Escreva a política atualizada através do método setIamPolicy. Por exemplo, para definir a política numa imagem específica, use o método project.setIamPolicy. No corpo do pedido, indique a política de IAM atualizada do passo anterior.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto ao qual esta imagem pertence
    • IMAGE_NAME: o nome da imagem

Opcionalmente, para permitir que os utilizadores vejam estas imagens partilhadas nos respetivos images.list pedidos, conceda aos utilizadores a função de IAM de leitor (roles/viewer) para o projeto de imagens através do método projects.setIamPolicy. Se não precisar que os seus utilizadores possam ver a lista de imagens partilhadas, pode ignorar este passo.

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy

Conceda autorizações para partilhar imagens personalizadas entre organizações

A criação de um catálogo de imagens personalizadas pode ser útil para partilhar imagens com parceiros, utilizadores ou contratados externos à sua organização. Para partilhar as suas imagens com utilizadores fora da organização, adicione-os como utilizadores de imagens ao seu projeto:

Consola

  1. Na Google Cloud consola, aceda à página Imagens.

    Aceder a Imagens

  2. Selecione a imagem que quer partilhar com outros utilizadores.

  3. Para expandir a coluna de autorizações, clique em Mostrar painel de informações.

  4. Para adicionar um ou mais membros, clique em Adicionar principal.

  5. No campo Novos principais, introduza o endereço de email do grupo com o qual quer partilhar a imagem. Por exemplo, admins@example.com.

  6. Na lista Função, mantenha o ponteiro sobre Compute Engine e selecione Utilizador de imagens de computação.

  7. Opcional: para controlar ainda mais o acesso dos utilizadores aos Google Cloud recursos, adicione uma associação de funções condicional.

  8. Guarde as alterações.

Para permitir que os utilizadores iniciem imagens personalizadas partilhadas a partir da Google Cloud consola, conceda aos utilizadores a função IAM de leitor (roles/viewer) para o projeto de imagem. A concessão deste papel ajuda a garantir que as imagens partilhadas aparecem na lista de seleção de imagens.

  1. Na Google Cloud consola, aceda à página IAM.

    Aceda ao IAM

  2. Clique em Conceder acesso.

  3. No campo Novos principais, introduza o endereço de email da identidade com a qual quer partilhar a imagem. Por exemplo, admins@example.com.

  4. Na lista Função, coloque o cursor do rato sobre Projeto e selecione Visualizador.

  5. Opcional: para controlar ainda mais o acesso dos utilizadores aos Google Cloud recursos, adicione uma associação de funções condicional.

  6. Guarde as alterações.

gcloud

Para conceder a função de roles/compute.imageUser aos utilizadores, use o gcloud compute images add-iam-policy-binding comando:

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='MEMBER' \
    --role='roles/compute.imageUser'

Substitua o seguinte:

  • IMAGE_NAME: o nome da imagem, por exemplo, custom-centos-8
  • MEMBER: uma identidade válida à qual quer atribuir a função, por exemplo, group:admins@example.com

Opcionalmente, para permitir que os utilizadores vejam estas imagens partilhadas nos respetivos images.list pedidos, conceda aos utilizadores a função de IAM de leitor (roles/viewer) para o projeto de imagens através do comando gcloud projects add-iam-policy-binding. Se não precisar que os seus utilizadores possam ver a lista de imagens partilhadas, pode ignorar este passo.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='MEMBER' \
    --role='roles/viewer'

REST

  1. Leia a política existente com o método getIamPolicy do recurso. Por exemplo, para obter a política sobre uma imagem específica, use o método images.getIamPolicy:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto ao qual esta imagem pertence
    • IMAGE_NAME: o nome da imagem

    O Compute Engine devolve a política atual na resposta.

  2. Para adicionar ou remover membros e as respetivas funções associadas, pode editar a política com um editor de texto. Use o seguinte formato para adicionar membros:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com

    Por exemplo, para conceder roles/compute.imageUser a test-user@example.com, adicione a seguinte associação à política:

    {
      "members": [
        "user:test-user@example.com"
      ],
      "role":"roles/compute.imageUser"
    }
    
  3. Escreva a política atualizada através do método setIamPolicy. Por exemplo, para definir uma política numa imagem específica, use o método images.setIamPolicy. No corpo do pedido, indique a política de IAM atualizada do passo anterior.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto ao qual esta imagem pertence
    • IMAGE_NAME: o nome da imagem

    Opcionalmente, para permitir que os utilizadores vejam estas imagens partilhadas nos respetivos images.list pedidos, conceda-lhes a função de IAM de leitor (roles/viewer) para o projeto de imagens através do método projects.setIamPolicy. Se não precisar que os seus utilizadores possam ver a lista de imagens partilhadas, pode ignorar este passo.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
    

Conceda autorizações para partilhar imagens personalizadas publicamente

Pode partilhar as suas imagens personalizadas com todos os utilizadores autenticados do Compute Engine, independentemente de fazerem parte da sua organização ou projeto.

Só pode partilhar recursos, como imagens, com todos os utilizadores autenticados; não pode partilhar projetos nem organizações com todos os utilizadores autenticados. Esta restrição, e a hierarquia de recursos, ajuda a impedir que uma organização partilhe inadvertidamente todo o seu projeto com todos os utilizadores autenticados do Compute Engine.

O exemplo seguinte mostra como conceder a todos os utilizadores autenticados do Compute Engine a função de utilizador de imagens do Compute (roles/compute.imageUser) a uma imagem personalizada.

gcloud

Para tornar as imagens públicas, use o comando gcloud compute images add-iam-policy-binding:

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='allAuthenticatedUsers' \
    --role='roles/compute.imageUser'

Substitua IMAGE_NAME pelo nome do recurso, por exemplo, my_image.

REST

  1. Leia a política existente com o método getIamPolicy. Por exemplo, para obter a política sobre uma imagem específica, use o método images.getIamPolicy:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto ao qual esta imagem pertence
    • IMAGE_NAME: o nome da imagem

    O Compute Engine devolve a política atual na resposta.

  2. Para adicionar ou remover membros e as respetivas funções associadas, edite a política com um editor de texto:

    {
     "members": [
       "allAuthenticatedUsers"
     ],
     "role":"roles/compute.imageUser"
    }
    
  3. Escreva a política atualizada através do método setIamPolicy. Por exemplo, para definir uma política numa imagem específica, use o método images.setIamPolicy. No corpo do pedido, indique a política de IAM atualizada do passo anterior.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto ao qual esta imagem pertence
    • IMAGE_NAME: o nome da imagem

Conceda a um grupo de instâncias geridas acesso a imagens

O Compute Engine permite-lhe criar grupos de instâncias, quer como grupos de instâncias geridos ou não geridos. Se criar um grupo de instâncias geridas (GIG), o Compute Engine usa o agente de serviço das APIs Google para chamar a API Compute Engine e realizar ações relacionadas com o grupo, como recriar instâncias não íntegras e atualizar instâncias.

Se quiser criar um MIG com uma imagem de outro projeto, conceda a função Utilizador de imagens do Compute (roles/compute.imageUser) à conta de serviço das APIs pertencente ao projeto que cria o MIG. Por exemplo:

  1. O projeto A quer criar um MIG com imagens pertencentes ao projeto B.
  2. O projeto B concede à conta de serviço do projeto A a função de utilizador da imagem de computação.
  3. O projeto A pode agora usar imagens do projeto B para criar MIGs.

Depois de conceder a função de utilizador da imagem do Compute, pode aceder à imagem a partir dos outros projetos através da consola ou do URL da imagem quando criar o modelo de instância para o grupo gerido.

Obtenha o endereço de email da conta de serviço

  1. Na Google Cloud consola, aceda à página IAM do projeto cuja conta de serviço quer conceder acesso.

    Aceda ao IAM

  2. Se lhe for pedido, selecione o seu projeto na lista.

  3. Procure o agente do serviço das APIs Google, que tem o endereço de email no seguinte formato:

    PROJECT_NUMBER@cloudservices.gserviceaccount.com
    

Depois de obter o endereço de email da conta de serviço, pode aceder a uma das seguintes secções:

Conceda a um MIG acesso a todas as imagens num projeto

Agora que tem o endereço de email de uma conta de serviço, pode adicionar o endereço a outro projeto e conceder-lhe a função de utilizador de imagens do Compute Engine (roles/compute.imageUser).

Consola

  1. Na Google Cloud consola, aceda à página IAM do projeto de imagem.

    Aceda ao IAM

  2. Para adicionar um novo membro, clique em Conceder acesso.

  3. No campo Novos membros, adicione o endereço de email da conta de serviço.

  4. Na lista Função, mantenha o ponteiro sobre Compute e selecione Utilizador da imagem do Compute.

  5. Opcional: para controlar ainda mais o acesso dos utilizadores aos Google Cloud recursos, adicione uma associação de funções condicional.

  6. Clique em Guardar.

  7. Mude novamente para o projeto da conta de serviço.

Agora, pode criar um modelo de instância com base numa imagem do projeto de imagem e criar um MIG com base no modelo de instância.

gcloud

Adicione uma conta de serviço do projeto de imagens através do comando gcloud projects add-iam-policy-binding:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' --role='roles/compute.imageUser'

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto que contém as imagens que quer partilhar
  • SERVICE_ACCOUNT_EMAIL: o email da conta de serviço

Agora, pode criar um modelo de instância com base numa imagem do projeto de imagem e criar um MIG com base no modelo de instância.

REST

  1. Obtenha a Política IAM do projeto de imagens através do método projects.getIamPolicy:

     POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
     

    Substitua PROJECT_ID pelo ID do projeto de imagens.

  2. Para conceder a função roles/compute.imageUser à conta de serviço, edite a política com um editor de texto:

    {
      "bindings": [
         {
          "role": "roles/compute.imageUser",
          "members": [
            "serviceAccount:SERVICE_ACCOUNT_EMAIL"
          ]
        }
      ]
    }
    

    Substitua SERVICE_ACCOUNT_EMAIL pelo email da conta de serviço.

  3. Escreva a política atualizada usando o projects.setIamPolicy. No corpo do pedido, indique a política de IAM atualizada do passo anterior.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
    

    Substitua PROJECT_ID pelo ID do produto do projeto de imagem.

    Agora, pode criar um modelo de instância com base numa imagem do projeto de imagem e criar um MIG com base no modelo de instância.

Conceda a um MIG acesso a imagens específicas num projeto

Agora que tem o endereço de email de uma conta de serviço, pode adicionar o endereço a outro projeto e conceder a função de utilizador de imagens de computação (roles/compute.imageUser) para determinadas imagens.

Consola

  1. Na Google Cloud consola, aceda à página Imagens do projeto de imagens.

    Aceder a Imagens

  2. Selecione as caixas de verificação junto às imagens que quer partilhar.

  3. Para expandir a coluna de autorizações, clique em Mostrar painel de informações.

  4. No painel Autorizações, clique em Adicionar principal.

  5. No campo Novos membros, introduza o email da conta de serviço com o qual quer partilhar a imagem. Por exemplo, test123@example.domain.com.

  6. Na lista Função, escolha Compute e selecione Utilizador de imagens do Compute.

  7. Opcional: para controlar ainda mais o acesso dos utilizadores aos Google Cloud recursos, adicione uma associação de funções condicional.

  8. Clique em Guardar.

  9. Mude novamente para o projeto da conta de serviço.

Agora, pode criar um modelo de instância com base numa imagem do projeto de imagem e criar um MIG com base no modelo de instância.

gcloud

Para conceder a uma conta de serviço acesso a uma imagem específica, use o comando gcloud compute images add-iam-policy-binding:

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/compute.imageUser'

Substitua o seguinte:

  • IMAGE_NAME: o nome da imagem que quer partilhar
  • SERVICE_ACCOUNT_EMAIL: o email da conta de serviço

Agora, pode criar um modelo de instância com base numa imagem do projeto de imagem e criar um MIG com base no modelo de instância.

REST

  1. Obtenha a política IAM de uma imagem através do método images.getIamPolicy:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto da imagem do projeto
    • IMAGE_NAME: o nome da imagem que quer partilhar
  2. Para conceder a função roles/compute.imageUser à conta de serviço, edite a política com um editor de texto:

    {
      "bindings": [
         {
          "role": "roles/compute.imageUser",
          "members": [
            "serviceAccount:SERVICE_ACCOUNT_EMAIL"
          ]
        }
      ]
    }
    

    Substitua SERVICE_ACCOUNT_EMAIL pelo email da conta de serviço.

  3. Escreva a política atualizada através do método images.setIamPolicy. No corpo do pedido, indique a política de IAM atualizada do passo anterior.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto da imagem do projeto
    • IMAGE_NAME: o nome da imagem que quer partilhar

    Agora, pode criar um modelo de instância com base numa imagem do projeto de imagem e criar um MIG com base no modelo de instância.

Controle a utilização das suas imagens e capturas de ecrã partilhadas

Depois de partilhar as suas imagens com outros utilizadores, pode controlar onde esses utilizadores usam esses recursos na sua organização. Defina a restrição constraints/compute.storageResourceUseRestrictions para definir os projetos onde os utilizadores têm autorização para usar os seus recursos de armazenamento.

Tem de ter autorização para modificar as políticas da sua organização para definir estas restrições. Por exemplo, a função resourcemanager.organizationAdmin tem autorização para definir estas restrições.

  1. Encontre o ID da organização da sua organização através do comando gcloud organization list:

    gcloud organizations list
    
  2. Obtenha as definições da política existentes para a sua organização através do comando gcloud resource-manager org-policies describe:

    gcloud resource-manager org-policies describe \
        compute.storageResourceUseRestrictions \
        --organization ORGANIZATION_ID > org-policy.yaml
    

    Substitua ORGANIZATION_ID pelo ID da organização numérico de 12 dígitos.

  3. Abra o ficheiro org-policy.yaml num editor de texto e modifique a restrição compute.storageResourceUseRestrictions. Adicione as restrições de que precisa ou remova as restrições que já não são necessárias. Quando terminar de editar o ficheiro, guarde as alterações. Por exemplo, pode definir a seguinte entrada de restrição no ficheiro de política:

    constraint: compute.storageResourceUseRestrictions
    listPolicy:
      allowedValues:
        - under:organization/organization-id
    
  4. Aplique o ficheiro org-policy.yaml à sua organização através do comando gcloud resource-manager org-policies set-policy:

    gcloud resource-manager org-policies set-policy \
       --organization=ORGANIZATION_ID org-policy.yaml
    

    Substitua ORGANIZATION_ID pelo ID da organização numérico de 12 dígitos.

Quando terminar de configurar as restrições na política da organização, teste-as para garantir que criam as restrições pretendidas.

Use imagens de outro projeto

Se alguém lhe conceder acesso a uma ou mais imagens noutro projeto, pode aceder a estas imagens no projeto especificando o projeto de imagens nos seus pedidos.

Por exemplo, para criar uma instância com uma imagem partilhada de outro projeto, siga os passos indicados em Crie uma instância a partir de uma imagem partilhada.

Também pode criar volumes de disco de arranque a partir de imagens noutro projeto. Para informações sobre como criar um disco de arranque a partir de uma imagem, consulte o artigo Criar um disco persistente de arranque autónomo.

Revogue o acesso a imagens partilhadas

Depois de um utilizador deixar de precisar de acesso aos seus recursos do Compute Engine, revogue o respetivo acesso através da Google Cloud consola, da Google Cloud CLI ou da API REST.

Consola

  1. Na Google Cloud consola, aceda à página Imagens do projeto de imagens.

    Aceder a Imagens

  2. Selecione as caixas de verificação junto às imagens que quer atualizar.

  3. Para expandir a coluna de autorizações, clique em Mostrar painel de informações.

  4. Expanda a função para a qual quer remover utilizadores.

  5. Para remover um utilizador dessa função, clique em Eliminar.

gcloud

Para remover um utilizador de uma função numa imagem, use o gcloud compute images remove-iam-policy-bindingcomando com as flags --member e --role:

gcloud compute images remove-iam-policy-binding IMAGE_NAME \
    --member='MEMBER' \
    --role='ROLE'

Substitua o seguinte:

  • IMAGE_NAME: o nome da imagem, por exemplo, my_image
  • MEMBER: a identidade que quer remover

    Tem de estar no formato user|group|serviceAccount:email ou domain:domain. Por exemplo:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • ROLE: a função da qual quer remover a identidade

Se estiver a revogar o acesso a um recurso em versão beta, use um comando gcloud beta compute em alternativa.

REST

  1. Leia a política existente com o método images.getIamPolicy:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto ao qual esta imagem pertence
    • IMAGE_NAME: o nome da imagem

    O Compute Engine devolve a política atual na resposta.

  2. Para remover membros e as respetivas funções associadas, edite a política com um editor de texto.

  3. Escreva a política atualizada através do método images.setIamPolicy. No corpo do pedido, indique a política de IAM atualizada do passo anterior.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/global/images/IMAGE_NAME:setIamPolicy
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto ao qual esta imagem pertence
    • IMAGE_NAME: o nome da imagem

O que se segue?