Nesta página, mostramos como usar o serviço de políticas da organização para exigir que os clusters do GKE usem uma ou mais plataformas baseadas em políticas de verificação de validação contínua (CV). Especifique as políticas de plataforma baseadas em verificação necessárias em restrições personalizadas. Em seguida, aplique as restrições personalizadas na política da organização.
Custos
Neste guia, usamos os seguintes serviços do Google Cloud:
- Autorização binária, mas a CV está disponível gratuitamente durante o estágio de Visualização
- As políticas e restrições da organização são oferecidas sem custos financeiros.
Antes de começar
- Ative a autorização binária.
- Configurar uma CV com políticas da plataforma baseada em verificação e pelo menos uma política de plataforma baseada em verificação de CV.
Funções exigidas
Para receber as permissões necessárias para criar restrições e aplicar políticas da organização,
peça ao administrador para conceder a você o
papel do IAM de administrador da política da organização (roles/orgpolicy.policyAdmin
) na sua organização do Google Cloud.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Criar uma restrição personalizada de CV
Console
No console do Google Cloud, acesse a página Políticas da organização.
Na página Políticas da organização, clique em
Restrição personalizada.Se for solicitado, clique em Alternar para organização pai. Para saber mais sobre organizações, consulte Introdução ao serviço de políticas da organização.
Em Detalhes da restrição, digite as seguintes informações nos campos:
Nome de exibição: um nome de exibição da restrição, como
Require a Binary Authorization continuous validation policy for all GKE clusters
: Use o nome de exibição para procurar a restrição depois de salvá-la. O campo de nome de exibição pode ter no máximo 200 caracteresID de restrição: um ID de restrição para sua restrição. Por exemplo,
RequireBinAuthzCVPolicy
:Descrição (opcional): uma descrição legível da restrição a ser exibida como uma mensagem de erro quando a política for violada. O campo de descrição tem um tamanho máximo de 2.000 caracteres.
Em Aplicação, faça o seguinte:
Em Tipos de recurso, insira
container.googleaips.com/Cluster
.Em Método de aplicação, selecione Aplicar na criação e atualização.
Insira uma expressão no campo Condição. Esse campo tem um comprimento máximo de 1000 caracteres. A restrição personalizada é aplicada quando a condição é avaliada como
true
. A condição é como uma expressão na sintaxe da Common Expression Language (CEL). Você pode combinar expressões com e (&&
) e ou (||
) para criar uma condição complexa. A CEL é uma linguagem de expressão semelhante a C. Para saber mais sobre a sintaxe e semântica de CEL, consulte https://github.com/google/cel-spec. Para inserir a condição, faça o seguinte:Clique em
Editar condição.Insira uma expressão para verificar a existência de uma política de plataforma de CV. A condição a seguir exige que uma vinculação de política de plataforma de CV exista e que a política da plataforma tenha um nome específico:
resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID/platforms/gke/policies/POLICY_ID")
Substitua:
PROJECT_ID
: o ID do projeto da política da plataforma. O projeto precisa estar na mesma organização.POLICY_ID
: o ID da política da sua política da plataforma.
A condição a seguir requer que duas vinculações de políticas de plataformas de CV existam e cada uma tenha um nome de política de plataforma específico;
resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID1/platforms/gke/policies/POLICY_ID1") && resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID2/platforms/gke/policies/POLICY_ID2")
PROJECT_ID1
: o ID do projeto da política da plataforma. O projeto precisa estar na mesma organização.POLICY_ID1
: o ID da primeira política da plataforma.PROJECT_ID2
: o ID do projeto da política da plataforma.POLICY_ID2
: o ID da segunda política da plataforma.Clique em Salvar.
Em Ação, selecione Permitir.
Para criar sua restrição personalizada, clique em Criar restrição.
gcloud
Crie um arquivo YAML para a restrição personalizada:
name: organizations/ORGANIZATION_ID/customConstraints/custom.CONSTRAINT_ID resource_types: container.googleapis.com/Cluster method_types: - CREATE - UPDATE condition: >- CONDITION action_type: ACTION display_name: DISPLAY_NAME description: DESCRIPTION
Substitua:
ORGANIZATION_ID
: o ID da sua organização. Por exemplo,123456789
.CONSTRAINT_ID
: um ID de restrição. Por exemplo,RequireBinAuthzCVPolicy
.CONDITION
: insira uma expressão para verificar a existência de uma política de plataforma de CV. Esse campo tem um comprimento máximo de 1000 caracteres. A restrição personalizada é aplicada quando a condição é avaliada comotrue
. A condição é como uma expressão na sintaxe da Common Expression Language (CEL). Você pode combinar expressões com e (&&
) e ou (||
) para criar uma condição complexa. A CEL é uma linguagem de expressão semelhante a C. Para saber mais sobre a sintaxe e semântica de CEL, consulte https://github.com/google/cel-spec. A condição a seguir exige que uma vinculação de política de plataforma de CV exista e que a política da plataforma tenha um nome específico:resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID/platforms/gke/policies/POLICY_ID")
Substitua:
PROJECT_ID
: o ID do projeto da política da plataforma. O projeto precisa estar na mesma organização.POLICY_ID
: o ID da política da sua política da plataforma.
A condição a seguir requer que duas vinculações de políticas de plataformas de CV existam e cada uma tenha um nome de política de plataforma específico;
resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID1/platforms/gke/policies/POLICY_ID1") && resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID2/platforms/gke/policies/POLICY_ID2")
PROJECT_ID1
: o ID do projeto da política da plataforma. O projeto precisa estar na mesma organização.POLICY_ID1
: o ID da primeira política da plataforma.PROJECT_ID2
: o ID do projeto da política da plataforma.POLICY_ID2
: o ID da segunda política da plataforma.ACTION
: a ação a ser realizada se ocondition
for atendido. Pode serALLOW
ouDENY
.DISPLAY_NAME
: um nome legível para a restrição. Por exemplo,Require a Binary Authorization continuous validation policy for all GKE clusters
. O campo de nome de exibição pode ter no máximo 200 caracteresDESCRIPTION
: uma descrição legível da restrição a ser exibida como uma mensagem de erro quando a política for violada. O campo de descrição tem um tamanho máximo de 2.000 caracteres.
Aplique a restrição personalizada:
gcloud org-policies set-custom-constraint CUSTOM_CONSTRAINT_PATH
Substitua
CUSTOM_CONSTRAINT_PATH
pelo caminho da sua definição de restrição personalizada.Verifique se a restrição personalizada existe:
gcloud org-policies list-custom-constraints \ --organization=ORGANIZATION_ID
O resultado será assim:
CUSTOM_CONSTRAINT: custom.RequireBinAuthzCVPolicy ACTION_TYPE: ALLOW METHOD_TYPES: CREATE,UPDATE RESOURCE_TYPES: container.googleapis.com/Cluster DISPLAY_NAME: This cluster requires the continuous validation policy: projects/my-project/platforms/gke/policies/my-policy
Para ativar a aplicação da restrição personalizada que você criou, crie uma política da organização.
Usar uma política da organização para aplicar a restrição personalizada
Para aplicar a nova restrição personalizada, crie uma política da organização que faça referência à restrição e aplique-a.
Console
Para aplicar a restrição, faça o seguinte:
No console do Google Cloud, acesse a página Políticas da organização.
Selecione o seletor de projetos e a organização.
Pesquise e selecione a restrição na lista.
Na página Detalhes da política para essa restrição, clique em Gerenciar política.
Na página Editar política, selecione Substituir a política do editor principal.
Clique em Adicionar uma regra.
Em Aplicação, selecione Ativada.
Opcional: clique em Testar alterações para simular o efeito dessa política da organização. Para mais informações, consulte Testar alterações na política da organização com o Simulador de política.
Para concluir e aplicar a política da organização, clique em Definir política.
gcloud
Crie um arquivo de definição de política YAML:
name: organizations/ORGANIZATION_ID/policies/custom.CONSTRAINT_ID spec: rules: - enforce: true
Substitua:
ORGANIZATION_ID
: o ID da organização.CONSTRAINT_ID
: o ID da restrição.
Aplique a política:
gcloud org-policies set-policy ORG_POLICY_PATH
Substitua
ORG_POLICY_PATH
pelo caminho para o arquivo de definição da política.Verifique se a política existe:
gcloud org-policies list \ --organization=ORGANIZATION_ID
Substitua
ORGANIZATION_ID
pelo ID da organização.Para ver uma lista de argumentos, consulte
gcloud org-policies list
.O resultado será assim:
CONSTRAINT: custom.RequireBinAuthzCVPolicy LIST_POLICY: - BOOLEAN_POLICY: SET ETAG: CN622LIGEIDXnpMB-
A política levará até 15 minutos para entrar em vigor.
Para aplicar múltiplas restrições à plataforma baseada em verificação de CV, faça o seguinte:
- Crie uma restrição personalizada por política baseada em verificações de CV.
- Atualize a política da organização com cada restrição personalizada, conforme descrito nesta seção.
Excluir a restrição personalizada
É possível excluir uma restrição personalizada usando o console do Google Cloud ou a CLI do Google Cloud.
Console
No console do Google Cloud, acesse a página Políticas da organização.
Selecione o seletor de projetos na parte superior da página.
No seletor de organização, selecione sua organização.
Pesquise e selecione a restrição na lista.
Em Detalhes da restrição, clique em
. Excluir.Para confirmar que você quer excluir a restrição, clique em Excluir.
gcloud
Para excluir uma restrição personalizada, use o comando org-policies delete-custom-constraint
da gcloud CLI:
gcloud org-policies delete-custom-constraint custom.CONSTRAINT_ID \
--organization=ORGANIZATION_ID
Substitua:
ORGANIZATION_ID
: o ID da organização, como123456789
.CONSTRAINT_NAME
: o nome da sua restrição personalizada
O resultado será assim:
Deleted custom constraint [organizations/123456789/customConstraints/CONSTRAINT_NAME]
Depois de excluir uma restrição personalizada, todas as políticas criadas usando a restrição continuam existindo, mas são ignoradas. Não é possível criar outra restrição personalizada com o mesmo nome de uma restrição personalizada excluída.
A seguir
- Saiba mais sobre restrições da política da organização.
- Usar a verificação de atualização de imagem
- Usar a verificação de atestado de assinatura simples
- Usar a verificação de assinatura do Sigstore
- Usar a verificação da SLSA
- Usar a verificação de diretório confiável
- Usar a verificação de vulnerabilidades
- Ver registros de CV