Crie e faça a gestão de restrições personalizadas

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 ou UPDATE 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, como 123456789.

  • CONSTRAINT_NAME : o nome da nova restrição personalizada. Uma restrição personalizada tem de começar com custom. 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 ser ALLOW ou DENY.

  • 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.

  1. 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.

  2. 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.

  1. 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, use projects/PROJECT_ID. Para aplicar a política numa organização específica, use organizations/ORGANIZATION_ID.

    • POLICY_NAME: o nome da nova política.

  2. 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.

  3. 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.

  1. 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"
    
  2. 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