Esta página mostra como habilitar e usar restrições personalizadas no seu ambiente GKE na AWS. Google CloudO Serviço de Política de Organização da ajuda você a gerenciar configurações de recursos e criar proteções em seu ambiente de nuvem.
Visão geral
Com políticas de organização personalizadas, você pode criar políticas de recursos granulares em ambientes do GKE Multi-Cloud para atender aos requisitos específicos de segurança e conformidade da sua organização. Você também pode criar políticas de organização em modo de teste para testar novas políticas sem afetar suas cargas de trabalho de produção.
Para saber mais sobre políticas da organização, consulte Introdução ao Serviço de Política da Organização .
Antes de começar
Antes de começar, certifique-se de entender os seguintes tópicos.
Herança de política
Por padrão, as políticas da organização são herdadas pelos descendentes dos recursos nos quais você aplica a política. Por exemplo, se você aplicar uma política a uma organização, Google Cloud aplica a política em todos os projetos da organização. Para saber mais sobre herança de políticas e como alterar regras de avaliação, consulte Regras de avaliação de hierarquia .
Limitações
Antes de criar restrições personalizadas, tenha em mente as seguintes limitações:
- Restrições personalizadas só podem ser aplicadas nos métodos
CREATE
ouUPDATE
para recursos do GKE na AWS. - Restrições personalizadas recém-impostas não se aplicam automaticamente aos recursos existentes. Você precisa atualizar os recursos existentes para aplicar a restrição. Para encontrar recursos existentes que precisam ser atualizados, você pode aplicar uma política de organização de teste .
- Para criar restrições e aplicar políticas de organização, você precisa da função IAM de Administrador de Políticas de Organização (
roles/orgpolicy.policyAdmin
) em seu Google Cloud organização. Para obter mais informações sobre as permissões necessárias para gerenciar políticas da organização com restrições personalizadas, consulte Funções necessárias .
Preços
Políticas organizacionais e restrições personalizadas são oferecidas gratuitamente.
Criar restrições personalizadas
Restrições personalizadas devem ser especificadas usando os campos nas especificações de recursos da API AwsCluster e AwsNodepool , excluindo 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 à sua organização usando a Google Cloud CLI. Essa restrição deve encapsular a política específica que você deseja aplicar aos seus recursos do GKE na AWS.
Crie um arquivo YAML para definir uma restrição personalizada no seu cluster:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- gkemulticloud.googleapis.com/AwsCluster
methodTypes:
- CREATE
condition: CONDITION
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
Para definir uma restrição personalizada no seu pool de nós, use a seguinte configuração YAML:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- gkemulticloud.googleapis.com/AwsNodePool
methodTypes:
- CREATE
condition: CONDITION
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
Substitua o seguinte:
ORGANIZATION_ID
: seu ID de organização, como123456789
.CONSTRAINT_NAME
: o nome da sua nova restrição personalizada. Uma restrição personalizada deve começar comcustom.
e pode incluir apenas letras maiúsculas, minúsculas ou números. Por exemplo,custom.allowClusterCreateIfAnnotationPresent
. O tamanho máximo deste campo é de 70 caracteres, sem contar o prefixo, por exemplo,organizations/123456789/customConstraints/custom
.CONDITION
: uma condição que é escrita em relação a uma representação de um Google Cloud Recurso. As condições são escritas em Linguagem de Expressão Comum (CEL) . Este campo tem um comprimento máximo de 1.000 caracteres. Por exemplo, condition:"key" in resource.annotations && resource.annotations.key == "created-by"
.ACTION
: a ação a ser tomada se a condição for atendida. Pode serALLOW
ouDENY
.DISPLAY_NAME
: um nome de exibição para a restrição. Este 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."
Este campo tem um comprimento máximo de 2.000 caracteres.
Para obter mais informações sobre como criar uma restrição personalizada, consulte Definindo restrições personalizadas .
Associe a restrição aos seus recursos
Depois de criar o arquivo YAML para uma nova restrição personalizada, você deve configurá-lo para tornar a restrição disponível para 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 sua definição YAML de 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/AwsCluster DISPLAY_NAME: Allow new clusters only when certain annotations are set.
Aplicar a restrição personalizada
Para impor a nova restrição personalizada, crie uma política de organização que faça referência à restrição e, em seguida, aplique a política de organização.
Crie um arquivo YAML para a política da organização:
name: RESOURCE_HIERARCHY/policies/POLICY_NAME spec: rules: - enforce: true
Substitua o seguinte:
RESOURCE_HIERARCHY
: a localização da nova política, que afeta o escopo da aplicação. Use o Google Cloud Hierarquia de recursos 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.
Aplicar a política:
gcloud org-policies set-policy PATH_TO_POLICY
Substitua
PATH_TO_POLICY
pelo caminho para seu arquivo de definição de política.Verifique se a política existe:
gcloud org-policies list --RESOURCE_FLAG=RESOURCE_ID
Substitua o seguinte:
RESOURCE_FLAG
: a Google Cloud recurso onde você aplicou a política. Por exemplo, um projeto ou organização.RESOURCE_ID
: o ID do recurso onde você aplicou a política. Por exemplo, o ID do seu projeto ou o ID da organização.
A saída é semelhante à seguinte:
CONSTRAINT: custom.allowClusterCreateIfAnnotationPresent LIST_POLICY: - BOOLEAN_POLICY: SET ETAG: CPjb27wGEOijhL4B-
Teste a política
Teste a política da organização criando um novo cluster da AWS em um projeto restrito.Crie um cluster da AWS em um projeto restrito.
gcloud container aws clusters create CLUSTER_NAME \ --aws-region AWS_REGION \ --location GOOGLE_CLOUD_LOCATION \ --cluster-version CLUSTER_VERSION \ --fleet-project FLEET_PROJECT \ --vpc-id VPC_ID \ --subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 \ --pod-address-cidr-blocks POD_ADDRESS_CIDR_BLOCKS \ --service-address-cidr-blocks SERVICE_ADDRESS_CIDR_BLOCKS \ --role-arn API_ROLE_ARN \ --database-encryption-kms-key-arn DB_KMS_KEY_ARN \ --admin-users ADMIN_USERS_LIST \ --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \ --iam-instance-profile CONTROL_PLANE_PROFILE \ --tags "Name=CLUSTER_NAME-cp"
A saída é semelhante à seguinte:
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