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 de clusters anexados do GKE.O serviço de políticas organizacionais 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 de clusters anexados do GKE.
  • 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 na especificação do recurso da API AttachedCluster, 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 aos recursos dos clusters anexados do GKE.

  1. Crie um ficheiro 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 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 recurso de cluster anexado. 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/AttachedCluster
    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 da organização registando um cluster do EKS num projeto restrito.

  1. Registe um cluster do EKS num projeto restrito.

    gcloud container attached clusters register CLUSTER_NAME \
      --location=GOOGLE_CLOUD_REGION \
      --fleet-project=PROJECT_NUMBER \
      --platform-version=PLATFORM_VERSION \
      --distribution=eks \
      --issuer-url=ISSUER_URL \
      --context=KUBECONFIG_CONTEXT \
      --kubeconfig=KUBECONFIG_PATH
    
    
  2. O resultado é semelhante ao seguinte:

    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