Configure uma configuração com vários projetos

Este tutorial descreve como usar a autorização binária numa configuração com vários projetos. Para uma configuração mais simples de projeto único, consulte o artigo Comece a usar a CLI do Google Cloud (GKE).

Para estabelecer a separação de funções, pode configurar a autorização binária numa configuração de vários projetos. A finalidade de cada projeto é abordada mais adiante neste tutorial.

Objetivos

Neste tutorial, vai realizar as seguintes tarefas:

  1. Configure um projeto diferente para a implementação (GKE), o atestador e a gestão de atestação, para suportar a separação de funções.

  2. Configure a regra predefinida da sua política de autorização binária para exigir atestações.

  3. Crie um par de chaves de infraestrutura de chave pública (X.509) (PKIX) para assinar e, posteriormente, validar a atestação.

  4. Crie um atestador que o aplicador da autorização binária usa para validar a atestação.

  5. Assinar uma imagem de exemplo, criando uma atestação.

  6. Teste a política implementando a imagem de exemplo.

Tem de configurar o controlo de acesso adequado de cada projeto através da gestão de identidade e de acesso (IAM).

Para segurança adicional, pode usar os VPC Service Controls para ajudar a proteger os recursos que criar neste tutorial. Para mais informações, consulte o artigo Proteja com o VPC Service Controls.

Custos

Neste documento, usa os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custos com base na sua utilização prevista, use a calculadora de preços.

Os novos Google Cloud utilizadores podem ser elegíveis para uma avaliação sem custo financeiro.

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.

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

  6. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  8. Verify that billing is enabled for your Google Cloud project.

  9. Install the Google Cloud CLI.

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

  11. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  12. Instale o kubectl para interagir com o GKE.
  13. Configure o projeto do implementador

    O projeto implementador gere os clusters do Google Kubernetes Engine (GKE), onde implementa imagens, e a política de autorização binária que a autorização binária aplica no momento da implementação. Pode ter mais do que um projeto de implementação, consoante o tamanho, a complexidade e outros requisitos do seu ambiente.

    Para configurar o projeto de implementação:

    1. Crie o projeto e ative a faturação na Google Cloud consola se ainda não o tiver feito.

    2. Nota sobre a gestão de identidade e de acesso: o projeto de implementação contém o seu cluster do GKE. A configuração da gestão de identidade e de acesso para este projeto deve refletir isso.

    3. Defina variáveis de ambiente para armazenar o Google Cloud projeto e o número:

      DEPLOYER_PROJECT_ID=DEPLOYER_PROJECT_ID
      

      Substitua DEPLOYER_PROJECT_ID pelo Google Cloud ID do projeto.

      DEPLOYER_PROJECT_NUMBER=$(gcloud projects describe "${DEPLOYER_PROJECT_ID}" \
          --format="value(projectNumber)")
      
    4. Ative as APIs:

      Artifact Registry

      gcloud --project=${DEPLOYER_PROJECT_ID} \
        services enable\
        container.googleapis.com\
        artifactregistry.googleapis.com\
        binaryauthorization.googleapis.com
      
    5. Obtenha o nome da conta de serviço do projeto implementador:

      DEPLOYER_SERVICE_ACCOUNT="service-${DEPLOYER_PROJECT_NUMBER}@gcp-sa-binaryauthorization.iam.gserviceaccount.com"
      

      Usa o nome da conta de serviço num passo posterior quando configura as autorizações na nota de análise de artefactos associada ao seu atestador.

    Configure o projeto do atestador

    Um projeto de atestador armazena os atestadores que podem validar se uma imagem está pronta para implementação. Muitas vezes, tem um único projeto de atestação que funciona como um repositório centralizado de informações sobre partes fidedignas no processo de autorização. Isto permite-lhe gerir centralmente as chaves de segurança necessárias para validar a identidade dos atestadores e restringir o acesso apenas às partes que as administram.

    Para configurar o projeto de atestação:

    1. Crie o projeto e ative a faturação na Google Cloud consola se ainda não o tiver feito.

    2. Nota de gestão de identidades e acessos: uma vez que este projeto contém os seus atestadores, apenas o pessoal de segurança deve ter acesso de escrita.

    3. Defina variáveis de ambiente para armazenar o ID e o número do projeto:

      ATTESTOR_PROJECT_ID=ATTESTOR_PROJECT_ID
      

      Substitua ATTESTOR_PROJECT_ID pelo ID do projeto do atestador.

      ATTESTOR_PROJECT_NUMBER=$(gcloud projects describe "${ATTESTOR_PROJECT_ID}" \
          --format="value(projectNumber)")
      
    4. Ative as APIs Artifact Analysis e Binary Authorization:

      gcloud services --project=${ATTESTOR_PROJECT_ID} \
          enable containeranalysis.googleapis.com \
          binaryauthorization.googleapis.com