Tipos de partilha entre projetos

Esta página descreve como partilhar tipos e fornecedores de tipos que pertencem ao seu projeto com outros projetos. Por exemplo, suponha que tem um projeto responsável pela manutenção de fornecedores de tipos pré-aprovados para a sua empresa. Quer poder partilhar estes fornecedores de tipos desse projeto com outros projetos e usar o projeto como um repositório central de tipos. Da mesma forma, também pode usar este método para partilhar tipos compostos entre projetos.

Para configurar o acesso, um proprietário do projeto que detém o tipo tem de conceder a função deploymentmanager.typeViewer (beta) à conta de serviço do projeto que quer consumir os tipos. Também têm de conceder a função aos utilizadores que querem ver e listar tipos de outro projeto.

Antes de começar

Limitações

Seguem-se as restrições para usar esta funcionalidade:

  • A atribuição da função deploymentmanager.typeViewer concede autorizações a todos os tipos no projeto específico. Não é possível limitar a partilha a tipos individuais.
  • Não é possível conceder esta função a allAuthenticatedUsers nem a allUsers.

Conceder a um projeto acesso a tipos de utilização

Para conceder acesso a tipos que pertencem a outros projetos, o proprietário do projeto que detém os tipos em questão tem de conceder a função deploymentmanager.typeViewer ao serviço de conta das APIs Google do projeto que quer consumir os tipos.

  1. Aceda à página IAM na Google Cloud consola do projeto que vai consumir os tipos.

    Aceda à página IAM

  2. Se lhe for pedido, selecione o seu projeto na lista.
  3. Procure a conta de serviço das APIs Google, que tem o endereço de email no seguinte formato:

    [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
    
  4. Tome nota do endereço de email acima. Em seguida, um proprietário do projeto onde os tipos pretendidos residem pode conceder à conta de serviço das APIs Google a função roles/deploymentmanager.typeViewer.

    Consola

    1. Enquanto ainda estiver na Google Cloud consola, aceda à página IAM do projeto que contém os tipos que quer partilhar.

      Aceda à página IAM

    2. Selecione o projeto na lista de projetos.
    3. Clique no botão Adicionar para adicionar um novo membro.
    4. Na caixa Membros, introduza o endereço de email da conta de serviço.
    5. Expanda o menu pendente Funções e selecione Outro > Visitante de tipos do Deployment Manager (beta).
    6. 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/deploymentmanager.typeViewer

    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 no projeto com o qual quer partilhar tipos.

    Por exemplo:

    gcloud projects add-iam-policy-binding database-images \
        --member serviceAccount:123456789012@cloudservices.gserviceaccount.com  \
        --role roles/deploymentmanager.typeViewer

    API

    Na API, faça um pedido POST para o seguinte URL, onde [PROJECT_ID] é o ID do projeto que contém os tipos 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/deploymentmanager.typeViewer deve fazer parte da associaçã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"
               ]
           }
           ]
       }
    

    }

Usar tipos de outros projetos na sua configuração

Depois de ter acesso aos seus tipos, pode especificar o tipo nas configurações através da sintaxe. Para tipos compostos:

type: [PROJECT_ID]/composite:[TYPE]

Para fornecedores de tipos:

type: [PROJECT_ID]/[TYPE]:[COLLECTION]

Onde:

  • [PROJECT_ID] é o ID do projeto proprietário do tipo.
  • [TYPE] é o nome do fornecedor do tipo ou do tipo composto.
  • [COLLECTION] é o recurso específico que está a criar. Isto só é aplicável a tipos base. Para mais informações sobre como especificar tipos base, leia o artigo Chamar um fornecedor de tipos numa configuração.

Por exemplo, se o ID do projeto for my-type-repository, pode fornecer a seguinte especificação de tipo:

resources:
- name: a-special-vm
  type: my-type-repository/composite:autoscaled-igm
  properties:
    ...

Conceder aos utilizadores a capacidade de listar e ver tipos

A concessão da função deploymentmanager.typeViewer à conta de serviço do projeto permite que o projeto implemente estes tipos nas suas configurações, mas não permite que os utilizadores vejam ou listem estes tipos. Se quiser conceder a utilizadores individuais a capacidade de ver tipos, tem de conceder a função deploymentmanager.typeViewer a cada utilizador.

Por exemplo, para que a Joana possa executar o comando gcloud beta deployment-manager types list --project another-project para um projeto que não lhe pertence, o proprietário de another-project tem de conceder à Joana a função deploymentmanager.typeViewer.

Usando a CLI gcloud, pode conceder a função a Jane da seguinte forma:

 gcloud projects add-iam-policy-binding another-project \
        --member user:jane@gmail.com --role deploymentmanager.typeViewer

Para obter instruções abrangentes sobre como adicionar e remover funções de utilizadores, leia a documentação sobre como conceder, alterar e revogar o acesso a membros do projeto.

O que se segue?