Esta página mostra como ativar e usar restrições personalizadas no ambiente de clusters anexados do GKE Serviço de políticas da organização do Google Cloudajuda a gerenciar configurações de recursos e criar proteções no seu ambiente de nuvem.
Visão geral
Com as políticas da organização personalizadas, é possível criar políticas de recursos granulares em ambientes de várias nuvens do GKE para atender aos requisitos específicos de segurança e compliance da sua organização. Também é possível criar políticas da organização no modo de simulação para testar novas políticas sem afetar as cargas de trabalho de produção.
Para saber mais sobre as políticas da organização, consulte Introdução ao serviço de políticas da organização.
Antes de começar
Antes de começar, entenda os seguintes tópicos:
Herança de políticas
Por padrão, as políticas da organização são herdadas pelos descendentes dos recursos em que a política é aplicada. Por exemplo, se você aplicar uma política em uma organização, Google Cloud a política será aplicada a todos os projetos dessa organização. Para saber mais sobre a herança de políticas e como mudar as regras de avaliação, consulte Regras de avaliação de hierarquia.
Limitações
Antes de criar restrições personalizadas, considere as seguintes limitações:
- As restrições personalizadas só podem ser aplicadas nos métodos
CREATE
ouUPDATE
dos recursos de clusters anexados do GKE. - As restrições personalizadas recém-aplicadas não se aplicam automaticamente aos recursos atuais. É necessário atualizar os recursos atuais para aplicar a restrição. Para encontrar recursos que precisam ser atualizados, aplique uma política da organização de simulação.
- Para criar restrições e aplicar políticas da organização, você precisa do papel do IAM de Administrador da política da organização (
roles/orgpolicy.policyAdmin
) na sua Google Cloud organização. Para mais informações sobre as permissões necessárias para gerenciar políticas da organização com restrições personalizadas, consulte Papéis obrigatórios.
Preços
As políticas da organização e restrições personalizadas são oferecidas sem custos financeiros.
Criar restrições personalizadas
As restrições personalizadas precisam ser especificadas usando os campos na especificação de recurso da API AttachedCluster, excluindo os campos descritos como "Somente saída".
Criar uma restrição personalizada
Para criar uma nova restrição personalizada, defina-a em um arquivo YAML e aplique-a na sua organização usando a Google Cloud CLI. Essa restrição precisa encapsular a política específica que você quer aplicar nos recursos dos clusters anexados ao GKE.
Crie um arquivo YAML para a restrição personalizada:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME resourceTypes: - gkemulticloud.googleapis.com/AttachedCluster methodTypes: - CREATE condition: \"CONDITION\" actionType: ACTION displayName: DISPLAY_NAME description: DESCRIPTION
Substitua:
ORGANIZATION_ID
: o ID da organização, como123456789
.CONSTRAINT_NAME
: o nome da nova restrição personalizada. Uma restrição personalizada precisa começar comcustom.
e só pode incluir letras maiúsculas, minúsculas ou números. Por exemplo,custom.allowClusterCreateIfAnnotationPresent
. O tamanho máximo desse campo é de 70 caracteres, sem contar o prefixo (por exemplo,organizations/123456789/customConstraints/custom
).CONDITION
: uma condição gravada em uma representação de um recurso de cluster anexado. As condições são escritas na Common Expression Language (CEL). Esse campo tem um comprimento máximo de 1.000 caracteres. Por exemplo, condição:"key" in resource.annotations && resource.annotations.key == "created-by"
.ACTION
: a ação a ser realizada se a condição for atendida. Pode serALLOW
ouDENY
.DISPLAY_NAME
: um nome de exibição para a restrição. Esse campo tem um comprimento máximo de 200 caracteres.DESCRIPTION
: uma descrição da restrição a ser exibida como uma mensagem de erro quando a política for violada. Por exemplo,"Allow new clusters only when certain annotations are set."
. Esse campo tem um tamanho máximo de 2.000 caracteres.
Para mais informações sobre como criar uma restrição personalizada, consulte Como definir restrições personalizadas.
Associar a restrição aos seus recursos
Depois de criar o arquivo YAML para uma nova restrição personalizada, configure-a para disponibilizar a restrição para as políticas da organização.
Para configurar uma restrição personalizada, use o comando
gcloud org-policies set-custom-constraint
:gcloud org-policies set-custom-constraint PATH_TO_FILE
Substitua
PATH_TO_FILE
pelo caminho da definição YAML da restrição personalizada.Para verificar se a restrição personalizada foi criada, use o comando
gcloud org-policies list-custom-constraints
:gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
A saída lista as políticas criadas:
CUSTOM_CONSTRAINT: custom.allowClusterCreateIfAnnotationPresent ACTION_TYPE: ALLOW METHOD_TYPES: CREATE RESOURCE_TYPES: gkemulticloud.googleapis.com/AttachedCluster DISPLAY_NAME: Allow new clusters only when certain annotations are set.
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.
Crie um arquivo YAML para a política da organização:
name: RESOURCE_HIERARCHY/policies/POLICY_NAME spec: rules: - enforce: true
Substitua:
RESOURCE_HIERARCHY
: o local da nova política, que afeta o escopo da aplicação. Use a hierarquia de recursos Google Cloud como guia. Por exemplo, se você quiser aplicar a política em um projeto específico, useprojects/
PROJECT_ID
. Para aplicar a política em uma organização específica, useorganizations/
ORGANIZATION_ID
.POLICY_NAME
: o nome da nova política.
Aplique a política:
gcloud org-policies set-policy PATH_TO_POLICY
Substitua
PATH_TO_POLICY
pelo caminho para o arquivo de definição da política.Verifique se a política existe:
gcloud org-policies list --RESOURCE_FLAG=RESOURCE_ID
Substitua:
RESOURCE_FLAG
: o recurso Google Cloud em que você aplicou a política. Por exemplo, um projeto ou uma organização.RESOURCE_ID
: o ID do recurso em que você aplicou a política. Por exemplo, o ID do projeto ou da organização.
O resultado será assim:
CONSTRAINT: custom.allowClusterCreateIfAnnotationPresent LIST_POLICY: - BOOLEAN_POLICY: SET ETAG: CPjb27wGEOijhL4B-
Testar a política
Para testar a política da organização, registre um cluster em conformidade com a CNCF em um projeto restrito.
Registre um cluster em conformidade com a CNCF em um projeto restrito.
gcloud container attached clusters register CLUSTER_NAME \ --location=GOOGLE_CLOUD_REGION \ --fleet-project=PROJECT_NUMBER \ --platform-version=PLATFORM_VERSION \ --distribution=generic \ --issuer-url=ISSUER_URL \ --context=KUBECONFIG_CONTEXT \ --kubeconfig=KUBECONFIG_PATH
O resultado será assim:
ERROR: (gcloud.container.attached.clusters.register) FAILED_PRECONDITION: Operation denied by org policy on resource 'projects/PROJECT_NUMBER/locations/GOOGLE_CLOUD_REGION': ["customConstraints/custom.allowClusterCreateIfAnnotationPresent": "Allow new clusters only when certain annotations are set."] '@type': type.googleapis.com/google.rpc.ErrorInfo domain: googleapis.com metadata: customConstraints: customConstraints/custom.allowClusterCreateIfAnnotationPresent service: gkemulticloud.googleapis.com reason: CUSTOM_ORG_POLICY_VIOLATION