Esta página mostra como ativar e usar restrições personalizadas no seu ambiente do GKE on AWS.O serviço de políticas da organização da Google CloudGoogle ajuda a gerir as configurações de recursos e a criar barreiras de proteção no seu ambiente de nuvem.
Vista geral
Com as políticas da organização personalizadas, pode criar políticas de recursos detalhadas em ambientes multicloud do GKE para cumprir os requisitos específicos de segurança e conformidade da sua organização. Também pode criar políticas da organização no modo de execução de ensaio para testar novas políticas sem afetar as suas cargas de trabalho de produção.
Para saber mais sobre as políticas de organização, consulte o artigo Introdução ao serviço de políticas de organização.
Antes de começar
Antes de começar, certifique-se de que compreende os seguintes tópicos.
Herança de políticas
Por predefinição, as políticas da organização são herdadas pelos descendentes dos recursos nos quais aplica a política. Por exemplo, se aplicar uma política a uma organização, Google Cloud aplica a política a todos os projetos na organização. Para saber mais sobre a herança de políticas e como alterar as regras de avaliação, consulte o artigo Regras de avaliação da hierarquia.
Limitações
Antes de criar restrições personalizadas, tenha em atenção as seguintes limitações:
- As restrições personalizadas só podem ser aplicadas nos métodos
CREATE
ouUPDATE
para recursos do GKE no AWS. - As restrições personalizadas recentemente aplicadas não são aplicadas automaticamente aos recursos existentes. Tem de atualizar os recursos existentes para aplicar a restrição. Para encontrar recursos existentes que precisam de ser atualizados, pode aplicar uma política da organização de teste.
- Para criar restrições e aplicar políticas da organização, precisa da função do IAM Administrador da política da organização (
roles/orgpolicy.policyAdmin
) na sua Google Cloud organização. Para mais informações acerca das autorizações necessárias para gerir políticas da organização com restrições personalizadas, consulte o artigo Funções necessárias.
Preços
As políticas organizacionais e as restrições personalizadas são oferecidas sem custo financeiro.
Crie restrições personalizadas
As restrições personalizadas têm de ser especificadas através dos campos nas especificações de recursos da API AwsCluster e AwsNodepool, excluindo os campos descritos como "Apenas saída".Crie uma restrição personalizada
Para criar uma nova restrição personalizada, define a restrição num ficheiro YAML e aplica a restrição personalizada na sua organização através da CLI Google Cloud. Esta restrição tem de encapsular a política específica que quer aplicar nos seus recursos do GKE no AWS.
Crie um ficheiro 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 conjunto 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
: o ID da sua organização, como123456789
.CONSTRAINT_NAME
: o nome da nova restrição personalizada. Uma restrição personalizada tem de começar comcustom.
e só pode incluir letras maiúsculas, letras minúsculas ou números. Por exemplo,custom.allowClusterCreateIfAnnotationPresent
. O comprimento máximo deste campo é de 70 carateres, sem contar com o prefixo, por exemplo,organizations/123456789/customConstraints/custom
.CONDITION
: uma condição escrita contra uma representação de um Google Cloud recurso. As condições são escritas no Idioma de expressão comum (IEC). Este campo tem um comprimento máximo de 1000 carateres. Por exemplo, condição:"key" in resource.annotations && resource.annotations.key == "created-by"
.ACTION
: a ação a realizar se a condição for cumprida. Pode serALLOW
ouDENY
.DISPLAY_NAME
: um nome a apresentar para a restrição. Este campo tem um comprimento máximo de 200 carateres.DESCRIPTION
: uma descrição da restrição a apresentar como uma mensagem de erro quando a política é violada, por exemplo,"Allow new clusters only when certain annotations are set."
Este campo tem um comprimento máximo de 2000 carateres.
Para mais informações sobre como criar uma restrição personalizada, consulte o artigo Definir restrições personalizadas.
Associe a restrição aos seus recursos
Depois de criar o ficheiro YAML para uma nova restrição personalizada, tem de o configurar para disponibilizar a restrição 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 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
O resultado apresenta 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.
Aplique 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, em seguida, aplique a política da organização.
Crie um ficheiro 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 âmbito da aplicação. Use a Google Cloud hierarquia de recursos como guia. Por exemplo, se quiser aplicar a política num projeto específico, useprojects/
PROJECT_ID
. Para aplicar a política numa 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 ficheiro de definição da política.Verifique se a política existe:
gcloud org-policies list --RESOURCE_FLAG=RESOURCE_ID
Substitua o seguinte:
RESOURCE_FLAG
: o Google Cloud recurso onde aplicou a política. Por exemplo, um projeto ou uma organização.RESOURCE_ID
: o ID do recurso onde aplicou a política. Por exemplo, o ID do projeto ou o ID da organização.
O resultado é semelhante ao seguinte:
CONSTRAINT: custom.allowClusterCreateIfAnnotationPresent LIST_POLICY: - BOOLEAN_POLICY: SET ETAG: CPjb27wGEOijhL4B-
Teste a política
Teste a política de organização criando um novo cluster da AWS num projeto restrito.Crie um cluster da AWS num 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"
O resultado é semelhante ao 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