Modify the constraint

Verificar meu progresso

/ 100

Este laboratório pode incorporar ferramentas de IA para ajudar no seu aprendizado.

GSP1021

Laboratórios autoguiados do Google Cloud

Visão geral

Neste laboratório, você vai aprender sobre o comando gcloud beta terraform vet, chamado de Validate no restante do laboratório. O "Validate" é uma ferramenta para aplicar o compliance com as políticas como parte de um pipeline de CI/CD da infraestrutura. É possível usá-lo para detectar violações de políticas e fornecer avisos ou interromper as implantações antes que elas cheguem à fase de produção.

Neste laboratório, você vai aprender a aplicar uma restrição de domínio. Você vai testar essa restrição e gerar um erro intencionalmente. Em seguida, vai modificar a restrição para que seu domínio seja aprovado.

Objetivos

Neste laboratório, você vai:

  • Aplicar uma restrição de domínio
  • Testar uma restrição para gerar um erro de validação intencionalmente
  • Modificar a restrição para que ela passe na validação

Pré-requisitos

Para fazer este laboratório, é necessário ter experiência com o Terraform. Confira o curso Criação de infraestrutura com o Terraform no Google Cloud para experiência prática com o Terraform.

Configuração e requisitos

Antes de clicar no botão Começar o Laboratório

Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é ativado quando você clica em Iniciar laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.

Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, e não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.

Confira os requisitos para concluir o laboratório:

  • Acesso a um navegador de Internet padrão (recomendamos o Chrome).
Observação: para executar este laboratório, use o modo de navegação anônima (recomendado) ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e de estudante, o que poderia causar cobranças extras na sua conta pessoal.
  • Tempo para concluir o laboratório: não se esqueça que, depois de começar, não será possível pausar o laboratório.
Observação: use apenas a conta de estudante neste laboratório. Se usar outra conta do Google Cloud, você poderá receber cobranças nela.

Como iniciar seu laboratório e fazer login no console do Google Cloud

  1. Clique no botão Começar laboratório. Se for preciso pagar por ele, uma caixa de diálogo vai aparecer para você selecionar a forma de pagamento. À direita, você encontra o painel Configuração e acesso ao laboratório com as seguintes informações:

    • O botão Abrir console do Google Cloud
    • As credenciais temporárias (nome de usuário e senha) que você vai usar no laboratório
    • Outros dados, se necessários

    O timer do laboratório fica na parte de cima da página e mostra o tempo restante.

  2. Se você estiver usando o navegador Chrome, clique em Abrir console do Google Cloud ou clique com o botão direito do mouse e selecione Abrir link em uma janela anônima.

    O laboratório ativa os recursos e depois abre a página "Login" em outra guia.

    Dica: coloque as guias em janelas separadas lado a lado.

    Observação: se aparecer a caixa de diálogo Escolher uma conta, clique em Usar outra conta.
  3. Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Login.

    {{{user_0.username | "Username"}}}

    Você também encontra o nome de usuário no painel Configuração e acesso ao laboratório.

  4. Clique em Avançar.

  5. Copie a Senha abaixo e cole na caixa de diálogo Olá!.

    {{{user_0.password | "Password"}}}

    Você também encontra a senha no painel Configuração e acesso ao laboratório.

  6. Clique em Avançar.

    Importante: você precisa usar as credenciais fornecidas no laboratório, e não as da sua conta do Google Cloud. Observação: se você usar sua própria conta do Google Cloud neste laboratório, talvez receba cobranças adicionais.
  7. Acesse as próximas páginas:

    • Aceite os Termos e Condições.
    • Não adicione opções de recuperação nem autenticação de dois fatores (porque essa é uma conta temporária).
    • Não se inscreva em testes sem custo financeiro.

Depois de alguns instantes, o console do Google Cloud será aberto nesta guia.

Observação: para acessar os produtos e serviços do Google Cloud, clique no Menu de navegação ou digite o nome do serviço ou produto no campo Pesquisar. Ícone do menu de navegação e campo de pesquisa

Ativar o Cloud Shell

O Cloud Shell é uma máquina virtual com várias ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud. O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.

  1. Clique em Ativar o Cloud Shell Ícone "Ativar o Cloud Shell" na parte de cima do console do Google Cloud.

  2. Clique nas seguintes janelas:

    • Continue na janela de informações do Cloud Shell.
    • Autorize o Cloud Shell a usar suas credenciais para fazer chamadas de APIs do Google Cloud.

Depois de se conectar, você verá que sua conta já está autenticada e que o projeto está configurado com seu Project_ID, . A saída contém uma linha que declara o projeto PROJECT_ID para esta sessão:

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

A gcloud é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.

  1. (Opcional) É possível listar o nome da conta ativa usando este comando:
gcloud auth list
  1. Clique em Autorizar.

Saída:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Opcional) É possível listar o ID do projeto usando este comando:
gcloud config list project

Saída:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Observação: consulte a documentação completa da gcloud no Google Cloud no guia de visão geral da gcloud CLI.

Tarefa 1: validar uma restrição

Para ver como uma restrição é implementada, você vai copiar uma que já existe, fornecer um caso de teste que falha na validação e, em seguida, modificar a restrição para que ela seja aprovada.

Copiar a restrição

  1. Abra uma nova janela do Cloud Shell e execute o comando a seguir para clonar o repositório da biblioteca de políticas.
git clone https://github.com/GoogleCloudPlatform/policy-library.git
  1. No prompt de comando, insira o seguinte conteúdo para copiar a restrição de amostra de restrição do domínio do IAM:
cd policy-library/ cp samples/iam_service_accounts_only.yaml policies/constraints
  1. Examine a restrição copiada colando-a no terminal.
cat policies/constraints/iam_service_accounts_only.yaml

A resposta será semelhante ao seguinte:

# This constraint checks that all IAM policy members are in the # "gserviceaccount.com" domain. apiVersion: constraints.gatekeeper.sh/v1alpha1 kind: GCPIAMAllowedPolicyMemberDomainsConstraintV2 metadata: name: service_accounts_only annotations: description: Checks that members that have been granted IAM roles belong to allowlisted domains. spec: severity: high match: target: # {"$ref":"#/definitions/io.k8s.cli.setters.target"} - "organizations/**" parameters: domains: - gserviceaccount.com

Observe a seção destacada na parte de baixo da página. Ela especifica que apenas membros do domínio gserviceaccount.com podem fazer parte de uma política do IAM.

Testar a restrição

  1. Para verificar se a política funciona conforme o esperado, crie um arquivo do Terraform no diretório atual.
touch main.tf
  1. Na barra de ferramentas do Cloud Shell, clique em Abrir editor. Para alternar entre o Cloud Shell e o editor de código, clique em Abrir editor ou Abrir terminal, conforme necessário, ou clique em Abrir em uma nova janela para deixar o editor aberto em uma guia separada.

  2. Abra o arquivo policy-library/main.tf e copie o seguinte código nele:

terraform { required_providers { google = { source = "hashicorp/google" version = "~> 3.84" } } } resource "google_project_iam_binding" "sample_iam_binding" { project = "<YOUR PROJECT ID>" role = "roles/viewer" members = [ "user:<USER>" ] }
  1. Substitua <YOUR PROJECT ID> por .

  2. Substitua <USER> por .

  3. Agora, volte ao terminal e execute o seguinte comando para inicializar o Terraform:

terraform init
  1. Execute o comando a seguir para exportar o plano do Terraform. Se for solicitado, clique em Autorizar.
terraform plan -out=test.tfplan
  1. Converta o plano do Terraform para JSON.
terraform show -json ./test.tfplan > ./tfplan.json
  1. Instale o componente Terraform Tools.
sudo apt-get install google-cloud-sdk-terraform-tools
  1. Execute o comando a seguir para verificar se o plano do Terraform está em conformidade com suas políticas.
gcloud beta terraform vet tfplan.json --policy-library=. Observação: ignore os avisos sobre a recuperação do ID do projeto.

Como o endereço de e-mail fornecido na vinculação da política do IAM não pertence a uma conta de serviço, o plano viola a restrição configurada. A resposta será parecida com esta:

constraint: GCPIAMAllowedPolicyMemberDomainsConstraintV2.service_accounts_only constraint_config: api_version: constraints.gatekeeper.sh/v1alpha1 kind: GCPIAMAllowedPolicyMemberDomainsConstraintV2 metadata: annotations: description: Checks that members that have been granted IAM roles belong to allowlisted domains. validation.gcp.forsetisecurity.org/originalName: service_accounts_only validation.gcp.forsetisecurity.org/yamlpath: policies/constraints/iam_service_accounts_only.yaml name: service-accounts-only spec: match: target: - organizations/** parameters: domains: - gserviceaccount.com severity: high message: 'IAM policy for //cloudresourcemanager.googleapis.com/projects/qwiklabs-gcp-02-ec89de7c9f9d contains member from unexpected domain: user:student-02-0edcb8aed69f@qwiklabs.net' metadata: ancestry_path: organizations/616463121992/folders/365352270458/folders/474147567761/folders/125430737939/projects/qwiklabs-gcp-02-ec89de7c9f9d constraint: annotations: description: Checks that members that have been granted IAM roles belong to allowlisted domains. validation.gcp.forsetisecurity.org/originalName: service_accounts_only validation.gcp.forsetisecurity.org/yamlpath: policies/constraints/iam_service_accounts_only.yaml labels: {} parameters: domains: - gserviceaccount.com details: member: user:student-02-0edcb8aed69f@qwiklabs.net resource: //cloudresourcemanager.googleapis.com/projects/qwiklabs-gcp-02-ec89de7c9f9d resource: //cloudresourcemanager.googleapis.com/projects/qwiklabs-gcp-02-ec89de7c9f9d severity: high Solução de problemas: se aparecer o erro: "Erro 403: o autor da chamada não tem permissão, proibido", significa que você não substituiu o argumento project_id em policy-library/main.tf ou que não tem as permissões necessárias no projeto especificado.

Tarefa 2: modificar a restrição

A restrição funciona como esperado, mas digamos que você queira modificá-la para permitir outros endereços de e-mail no seu domínio.

  1. No Editor, navegue até o arquivo policy-library/policies/constraints/iam_service_accounts_only.yaml.

  2. Na seção domains, adicione o domínio de e-mail qwiklabs.net à lista de permissões de domínios:

apiVersion: constraints.gatekeeper.sh/v1alpha1 kind: GCPIAMAllowedPolicyMemberDomainsConstraintV1 metadata: name: service_accounts_only spec: severity: high match: target: ["organizations/**"] parameters: domains: - gserviceaccount.com - qwiklabs.net
  1. Volte para a janela do Cloud Shell e exporte um novo plano do Terraform em JSON.
terraform plan -out=test.tfplan
  1. Agora, valide seu plano do Terraform outra vez e ele não deve encontrar violações.
gcloud beta terraform vet tfplan.json --policy-library=.

Resultado:

Validating resources...done.
  1. Por fim, aplique o plano do Terraform para a política do IAM a fim de conceder um papel ao membro do domínio.
terraform apply test.tfplan

Clique em Verificar meu progresso para conferir o objetivo. Modificar a restrição

Parabéns!

Neste laboratório, você aprendeu a aplicar uma restrição de domínio. Você testou essa restrição, que gerou um erro. Depois, fez modificações nela para que os domínios definidos por você pudessem passar na validação.

Próximas etapas / Saiba mais

Acesse os recursos a seguir para mais experiências práticas com o Validator e o Terraform:

Treinamento e certificação do Google Cloud

Esses treinamentos ajudam você a aproveitar as tecnologias do Google Cloud ao máximo. Nossas aulas incluem habilidades técnicas e práticas recomendadas para ajudar você a alcançar rapidamente o nível esperado e continuar sua jornada de aprendizado. Oferecemos treinamentos que vão do nível básico ao avançado, com opções de aulas virtuais, sob demanda e por meio de transmissões ao vivo para que você possa encaixá-las na correria do seu dia a dia. As certificações validam sua experiência e comprovam suas habilidades com as tecnologias do Google Cloud.

Manual atualizado em 29 de novembro de 2024

Laboratório testado em 29 de novembro de 2024

Copyright 2026 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.

Antes de começar

  1. Os laboratórios criam um projeto e recursos do Google Cloud por um período fixo
  2. Os laboratórios têm um limite de tempo e não têm o recurso de pausa. Se você encerrar o laboratório, vai precisar recomeçar do início.
  3. No canto superior esquerdo da tela, clique em Começar o laboratório

Usar a navegação anônima

  1. Copie o nome de usuário e a senha fornecidos para o laboratório
  2. Clique em Abrir console no modo anônimo

Fazer login no console

  1. Faça login usando suas credenciais do laboratório. Usar outras credenciais pode causar erros ou gerar cobranças.
  2. Aceite os termos e pule a página de recursos de recuperação
  3. Não clique em Terminar o laboratório a menos que você tenha concluído ou queira recomeçar, porque isso vai apagar seu trabalho e remover o projeto

Este conteúdo não está disponível no momento

Você vai receber uma notificação por e-mail quando ele estiver disponível

Ótimo!

Vamos entrar em contato por e-mail se ele ficar disponível

Um laboratório por vez

Confirme para encerrar todos os laboratórios atuais e iniciar este

Use a navegação anônima para executar o laboratório

A melhor maneira de executar este laboratório é usando uma janela de navegação anônima ou privada. Isso evita conflitos entre sua conta pessoal e a conta de estudante, o que poderia causar cobranças extras na sua conta pessoal.