Execute as suas próprias autoridades de certificação e chaves no GKE

.

Esta página mostra como configurar o plano de controlo do cluster do Google Kubernetes Engine (GKE) com autoridades de certificação (ACs) e chaves que gere. Estas orientações destinam-se a administradores de segurança que tenham requisitos organizacionais específicos de conformidade ou políticas para o controlo da emissão e da assinatura de credenciais.

Esta página descreve uma parte de um conjunto de funcionalidades opcionais do plano de controlo no GKE que lhe permitem realizar tarefas como validar a sua postura de segurança do plano de controlo ou configurar a encriptação e a assinatura de credenciais no plano de controlo através de chaves que gere. Para mais detalhes, consulte o artigo Acerca da autoridade do plano de controlo do GKE.

Por predefinição, Google Cloud aplica várias medidas de segurança ao plano de controlo gerido. Esta página descreve as capacidades opcionais que lhe dão mais visibilidade ou controlo sobre o plano de controlo do GKE.

Já deve estar familiarizado com os seguintes conceitos:

Componentes de credenciais do plano de controlo

Os clusters do GKE usam chaves e ACs específicas para emitir credenciais no cluster, como certificados X.509 ou tokens ServiceAccount. Pode criar chaves no Cloud Key Management Service (Cloud KMS) e ACs no Certificate Authority Service (CA Service) e configurar os seus clusters para usar estes recursos em vez de Google Cloudchaves e ACs geridas.

Para saber mais acerca dos componentes específicos que cria, consulte o artigo Autoridades de certificação e chaves autogeridas.

Utilização com outras funcionalidades de autoridade do plano de controlo do GKE

A autoridade do plano de controlo do GKE oferece as seguintes funcionalidades relacionadas com chaves autogeridas:

Prepare o ambiente

Nesta secção, identifica os Google Cloud projetos que vai usar neste tutorial e cria um conjunto de chaves no Cloud KMS para guardar as suas chaves.

Identifique projetos

Recomendamos que use Google Cloud projetos separados da seguinte forma:

  • Projeto principal: contém todas as chaves e ACs.
  • Projeto do cluster: contém os seus clusters do GKE.

Opcionalmente, pode usar o mesmo projeto para as chaves, as ACs e os clusters do GKE, mas recomendamos que use projetos separados para que as equipas que gerem operações criptográficas na sua organização estejam separadas das equipas que gerem operações de cluster.

Crie um conjunto de chaves

Crie um conjunto de chaves no projeto de chaves para conter todas as chaves de um cluster específico. Tem de criar o conjunto de chaves na mesma localização que o cluster do GKE.

Execute o seguinte comando:

gcloud kms keyrings create KEY_RING_NAME \
    --location=LOCATION \
    --project=KEY_PROJECT_ID

Substitua o seguinte:

  • KEY_RING_NAME: um nome para o seu conjunto de chaves.
  • KEY_PROJECT_ID: o ID do projeto principal.
  • LOCATION: a região onde quer criar o conjunto de chaves. Google Cloud Tem de ser a mesma região onde o seu cluster do GKE está localizado.

Crie chaves

Para cada uma das autoridades de credenciais, como chaves de contas de serviço e ACs, crie uma chave através do Cloud KMS. Esta secção mostra-lhe como criar as chaves que o GKE usa para assinar e validar credenciais no cluster. Pode especificar as suas próprias propriedades para estas chaves, consoante as necessidades da sua organização. Para ver detalhes, consulte a página Crie uma chave e a projects.locations.keyRings.cryptoKeys referência da API.

Considere o seguinte quando criar estes recursos no Cloud KMS:

  • Se tiver um conjunto de chaves existente no seu projeto de chaves, pode usá-lo para armazenar todas as chaves que criar para utilização com o seu cluster.
  • O anel de chaves tem de estar na mesma Google Cloud localização que o cluster para minimizar a latência.
  • As chaves têm de especificar asymmetric-signing como objetivo principal.
  • Use os seguintes algoritmos com base no tipo de chave:
    • Chaves de assinatura de contas de serviço: um algoritmo PKCS1 de assinatura RSA forte, como rsa-sign-pkcs1-4096-sha256 ou rsa-sign-pkcs1-3072-sha256.
    • Chaves da autoridade de certificação: um algoritmo forte, como ec-sign-p256-sha256.
  • As chaves de hardware do HSM na nuvem são suportadas, mas o software nível de proteção é suficiente para a maioria dos exemplos de utilização. Para ver detalhes sobre as chaves de hardware, consulte o artigo HSM na nuvem.
  • Não modifique a duração predefinida para a destruição de chaves.
  • O GKE não impede a eliminação de chaves do Cloud KMS, incluindo chaves do serviço de AC, que estão a ser usadas pelo cluster. Antes de eliminar chaves ou ACs, certifique-se de que os recursos não estão a ser usados.

Para criar as chaves, execute os seguintes comandos:

  1. Crie a chave de assinatura da conta de serviço do Kubernetes, que também especifica como a chave de validação da conta de serviço durante a criação do cluster:

    gcloud kms keys create sa-signing-key \
        --keyring=KEY_RING_NAME \
        --location=LOCATION \
        --purpose="asymmetric-signing" \
        --protection-level=hsm \
        --default-algorithm=rsa-sign-pkcs1-4096-sha256 \
        --project=KEY_PROJECT_ID
    

    Substitua KEY_PROJECT_ID pelo ID do projeto da sua chave dedicada.

  2. Crie a chave da AC de raiz do cluster:

    gcloud kms keys create cluster-ca-key \
        --keyring=KEY_RING_NAME \
        --location=LOCATION \
        --purpose="asymmetric-signing" \
        --protection-level=hsm \
        --default-algorithm=ec-sign-p256-sha256 \
        --project=KEY_PROJECT_ID
    
  3. Crie a chave da AC de raiz do par etcd:

    gcloud kms keys create etcd-peer-ca-key \
        --keyring=KEY_RING_NAME \
        --location=LOCATION \
        --purpose="asymmetric-signing" \
        --protection-level=hsm \
        --default-algorithm=ec-sign-p256-sha256 \
        --project=KEY_PROJECT_ID
    
  4. Crie a chave de CA raiz da API etcd:

    gcloud kms keys create etcd-api-ca-key \
        --keyring=KEY_RING_NAME \
        --location=LOCATION \
        --purpose="asymmetric-signing" \
        --protection-level=hsm \
        --default-algorithm=ec-sign-p256-sha256 \
        --project=KEY_PROJECT_ID
    
  5. Crie a chave da AC de raiz de agregação:

    gcloud kms keys create aggregation-ca-key \
        --keyring=KEY_RING_NAME \
        --location=LOCATION \
        --purpose="asymmetric-signing" \
        --protection-level=hsm \
        --default-algorithm=ec-sign-p256-sha256 \
        --project=KEY_PROJECT_ID
    

Crie as ACs

Depois de criar as chaves para cada uma das funções do plano de controlo, use cada chave para criar os conjuntos de ACs e as ACs raiz correspondentes através do serviço de AC:

  1. Crie o grupo de CA do cluster:

    gcloud privateca pools create cluster-ca-pool \
        --location=LOCATION \
        --tier=enterprise \
        --project=KEY_PROJECT_ID \
        --no-publish-crl --no-publish-ca-cert
    

    O sinalizador --no-publish-crl e o sinalizador --no-publish-ca-cert são opcionais. A omissão destas flags publica certificados num segmento do Cloud Storage. Para ver detalhes, consulte o artigo Ative a publicação de certificados da AC e LCRs para ACs num conjunto de ACs.

  2. Crie a AC de raiz do cluster:

    gcloud privateca roots create cluster-root-ca \
        --pool=cluster-ca-pool \
        --location=LOCATION \
        --kms-key-version=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/cluster-ca-key/cryptoKeyVersions/1 \
        --subject="CN=cluster-ca, O=ORGANIZATION" \
        --project=KEY_PROJECT_ID \
        --auto-enable
    

    Substitua ORGANIZATION pelo nome da sua organização.

  3. Crie o grupo de ACs de pares do etcd:

    gcloud privateca pools create etcd-peer-ca-pool \
        --location=LOCATION \
        --tier=enterprise \
        --project=KEY_PROJECT_ID \
        --no-publish-crl --no-publish-ca-cert
    
  4. Crie a AC de raiz do par etcd:

    gcloud privateca roots create etcd-peer-root-ca \
        --pool=etcd-peer-ca-pool \
        --location=LOCATION \
        --kms-key-version=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/etcd-peer-ca-key/cryptoKeyVersions/1 \
        --subject="CN=etcd-peer-ca, O=ORGANIZATION" \
        --project=KEY_PROJECT_ID \
        --auto-enable
    
  5. Crie o grupo de ACs da API etcd:

    gcloud privateca pools create etcd-api-ca-pool \
        --location=LOCATION \
        --tier=enterprise \
        --project=KEY_PROJECT_ID \
        --no-publish-crl --no-publish-ca-cert
    
  6. Crie a AC de raiz da API etcd:

    gcloud privateca roots create etcd-api-root-ca \
        --pool=etcd-api-ca-pool \
        --location=LOCATION \
        --kms-key-version=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/etcd-api-ca-key/cryptoKeyVersions/1 \
        --subject="CN=etcd-api-ca, O=ORGANIZATION" \
        --project=KEY_PROJECT_ID \
        --auto-enable
    
  7. Crie o grupo de CA de agregação:

    gcloud privateca pools create aggregation-ca-pool \
        --location=LOCATION \
        --tier=enterprise \
        --project=KEY_PROJECT_ID \
        --no-publish-crl --no-publish-ca-cert
    
  8. Crie a AC de raiz de agregação:

    gcloud privateca roots create aggregation-root-ca \
        --pool=aggregation-ca-pool \
        --location=LOCATION \
        --kms-key-version=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/aggregation-ca-key/cryptoKeyVersions/1 \
        --subject="CN=aggregation-ca, O=ORGANIZATION" \
        --project=KEY_PROJECT_ID \
        --auto-enable
    

Conceda funções IAM ao agente do serviço GKE

O agente de serviço do GKE requer acesso aos recursos que criou no Cloud KMS e no CA Service. O agente de serviço usa estes recursos para assinar, validar e emitir credenciais no cluster. Pode usar as seguintes funções de IAM predefinidas:

Para conceder estas funções ao agente de serviço do GKE, faça o seguinte:

  1. Encontre o número do projeto do seu projeto de cluster:

    gcloud projects describe CLUSTER_PROJECT_ID \
        --format='value(projectNumber)'
    

    Substitua CLUSTER_PROJECT_ID pelo ID do projeto do cluster.

  2. Conceda a função de utilizador da chave criptográfica do KMS do Kubernetes Engine na chave de assinatura da conta de serviço que criou em Criar chaves:

    gcloud kms keys add-iam-policy-binding sa-signing-key \
      --location=LOCATION \
      --keyring=KEY_RING_NAME \
      --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
      --role=roles/container.cloudKmsKeyUser \
      --project=KEY_PROJECT_ID
    

    Substitua CLUSTER_PROJECT_NUMBER pelo número do projeto do cluster.

  3. Conceda a função Gestor de certificados do serviço de AC aos conjuntos de ACs que criou em Crie as ACs:

    gcloud privateca pools add-iam-policy-binding cluster-ca-pool \
        --location=LOCATION \
        --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
        --role=roles/privateca.certificateManager \
        --project=KEY_PROJECT_ID
    
    gcloud privateca pools add-iam-policy-binding etcd-peer-ca-pool \
        --location=LOCATION \
        --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
        --role=roles/privateca.certificateManager \
        --project=KEY_PROJECT_ID
    
    gcloud privateca pools add-iam-policy-binding etcd-api-ca-pool \
        --location=LOCATION \
        --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
        --role=roles/privateca.certificateManager \
        --project=KEY_PROJECT_ID
    
    gcloud privateca pools add-iam-policy-binding aggregation-ca-pool \
        --location=LOCATION \
        --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
        --role=roles/privateca.certificateManager \
        --project=KEY_PROJECT_ID
    

Conceda funções adicionais quando não estiver a usar a CLI gcloud

Esta secção descreve os passos de configuração adicionais que tem de realizar se planear configurar as suas ACs e chaves através de um cliente como o Terraform ou a Google Cloud consola, em vez de usar a CLI gcloud. Se usar a CLI gcloud, ignore esta secção e aceda à secção Configure as ACs e as chaves num novo cluster.

Quando usa a CLI gcloud para configurar as ACs e as chaves, conforme descrito nesta página, a CLI gcloud cria e configura automaticamente um agente de serviço para o serviço de AC e concede funções do IAM ao agente de serviço. No entanto, se usar um cliente como o Terraform ou a Google Cloud consola para configurar o seu Google Cloud ambiente, tem de realizar estes passos de configuração manualmente da seguinte forma para o seu projeto de chave:

  1. Aciona a criação do agente de serviço do serviço de AC.

    gcloud beta services identity create --service=privateca.googleapis.com \
        --project=KEY_PROJECT_ID
    
  2. Encontre o número do projeto principal:

    gcloud projects describe KEY_PROJECT_ID \
        --format='value(projectNumber)'
    
  3. Conceda a função Visualizador (roles/viewer) e a função Signatário/validador de CryptoKey do Cloud KMS (roles/cloudkms.signerVerifier) a todas as chaves de AC raiz que criou na secção Criar chaves:

    for key in cluster-ca-key etcd-peer-ca-key etcd-api-ca-key aggregation-ca-key
    do
    gcloud kms keys add-iam-policy-binding $key \
        --keyring=KEY_RING_NAME \
        --location=LOCATION \
        --role=roles/viewer \
        --member="serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com" \
        --project=KEY_PROJECT_ID
    
    gcloud kms keys add-iam-policy-binding $key \
        --keyring=KEY_RING_NAME \
        --location=LOCATION \
        --role=roles/cloudkms.signerVerifier \
        --member="serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com" \
        --project=KEY_PROJECT_ID
    done
    

    Substitua KEY_PROJECT_NUMBER pelo número do projeto principal da saída do passo anterior.

    Este comando é um ciclo for que itera pelas chaves da AC raiz, concedendo cada função nessa chave ao agente do serviço de AC. Se usou nomes diferentes para as chaves da AC raiz, execute estes comandos manualmente para cada chave.

Configure ACs e chaves num novo cluster

Depois de criar chaves, conjuntos de ACs, ACs de raiz e conceder funções de IAM ao agente de serviço do GKE, crie um novo cluster que use estes recursos.

As flags que especificar no comando de criação de clusters requerem os seguintes caminhos de recursos como valores:

  • Caminho para uma versão de chave no Cloud KMS para a chave de assinatura da conta de serviço que criou em Crie chaves. Especifica este caminho para o sinalizador service-account-signing-keys e para o sinalizador service-account-verification-keys.
  • Caminho para cada um dos conjuntos de CA que criou em Crie as CAs.

Para configurar um novo cluster para usar as suas chaves e ACs, siga estes passos:

  1. Encontre o caminho para a versão mais recente da chave de assinatura da conta de serviço ativada:

    gcloud kms keys versions list \
        --key=sa-signing-key \
        --keyring=KEY_RING_NAME \
        --location=LOCATION \
        --project=KEY_PROJECT_ID \
        --filter="STATE=ENABLED" --sort-by=~ --format="value(name)" | sed 1q
    

    Substitua KEY_PROJECT_ID pelo ID do projeto do projeto principal.

    O resultado é semelhante ao seguinte:

    projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1
    
  2. Encontre os caminhos para cada um dos conjuntos de CA que criou:

    gcloud privateca pools list --format="get(name)" \
        --project=KEY_PROJECT_ID
    

    O resultado é semelhante ao seguinte:

    projects/KEY_PROJECT_ID/locations/LOCATION/caPools/cluster-ca-pool
    projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-peer-ca-pool
    projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-api-ca-pool
    projects/KEY_PROJECT_ID/locations/LOCATION/caPools/aggregation-ca-pool
    

    Certifique-se de que o resultado contém todos os conjuntos de ACs que criou para o GKE.

Crie um cluster

Nesta secção, cria um cluster com diferentes opções especificadas, dependendo das funcionalidades de autoridade do plano de controlo do GKE que quer configurar. Só pode configurar estas funcionalidades num cluster durante a criação do cluster. Os seguintes comandos criam clusters no modo padrão. Em alternativa, para criar clusters do modo de piloto automático, use as mesmas flags com o comando gcloud container clusters create-auto.

  • Para configurar apenas as ACs e as chaves que criou neste tutorial, execute o seguinte comando:

    gcloud container clusters create example-cluster \
        --location=LOCATION \
        --project=CLUSTER_PROJECT_ID \
        --cluster-version=VERSION \
        --service-account-signing-keys=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1 \
        --service-account-verification-keys=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1 \
        --cluster-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/cluster-ca-pool \
        --etcd-peer-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-peer-ca-pool \
        --etcd-api-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-api-ca-pool \
        --aggregation-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/aggregation-ca-pool
    

    Substitua o seguinte:

    • CLUSTER_PROJECT_ID: o ID do projeto do projeto do cluster.
    • VERSION: a versão do GKE do cluster. Tem de ser 1.31.1-gke.1846000 ou posterior.
  • Para configurar as ACs e as chaves, bem como a encriptação do disco de arranque do plano de controlo e a encriptação do etcd, faça o seguinte:

    1. Execute todos os passos de configuração de chaves em Encriptar discos de arranque do etcd e do plano de controlo.
    2. Encontre os caminhos para cada uma das chaves através das instruções em Use chaves de encriptação num cluster.
    3. Crie um cluster:

      gcloud container clusters create example-cluster \
          --location=LOCATION \
          --project=CLUSTER_PROJECT_ID \
          --cluster-version=VERSION \
          --service-account-signing-keys=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1 \
          --service-account-verification-keys=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1 \
          --cluster-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/cluster-ca-pool \
          --etcd-peer-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-peer-ca-pool \
          --etcd-api-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-api-ca-pool \
          --aggregation-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/aggregation-ca-pool \
          --control-plane-disk-encryption-key=PATH_TO_DISK_KEY \
          --gkeops-etcd-backup-encryption-key=PATH_TO_ETCD_BACKUP_KEY
      

      Substitua o seguinte:

      • CLUSTER_PROJECT_ID: o ID do projeto do projeto do cluster.
      • VERSION: a versão do GKE do cluster. Tem de ser 1.31.1-gke.1846000 ou posterior.
      • PATH_TO_DISK_KEY: o caminho para a chave de encriptação do disco.
      • PATH_TO_ETCD_BACKUP_KEY: o caminho para a chave de encriptação de cópia de segurança interna do etcd.

    Também pode usar estas flags quando cria um novo cluster no modo padrão.

Verifique se o cluster usa as chaves e as ACs especificadas

Esta secção mostra como validar as chaves e as ACs que foram usadas durante a criação do cluster. Pode fazer esta validação através do Cloud Logging ou da CLI do Google Cloud.

Use o registo para validar chaves e ACs

Para validar as chaves e as ACs através do registo, faça o seguinte:

  1. Na Google Cloud consola, aceda à página Explorador de registos:

    Aceda ao Explorador de registos

  2. Especifique a seguinte consulta:

    resource.type="gke_cluster"
    resource.labels.cluster_name="CLUSTER_NAME"
    resource.labels.location="CLUSTER_LOCATION"
    protoPayload.serviceName="container.googleapis.com"
    protoPayload.methodName=~"google.container.v(1|1alpha1|1beta1).ClusterManager.CreateCluster"
    protoPayload.request.cluster.userManagedKeysConfig:*
    

    protoPayload.request.cluster.userManagedKeysConfig:* filtra os resultados para registos de criação de clusters que incluem chaves e ACs que gere.

  3. Clique em Executar consulta.

Nos resultados, expanda o registo de criação de clusters. Verifique se os caminhos para as chaves e as ACs são os mesmos que criou para esse cluster, como no exemplo seguinte:

# lines omitted for clarity
userManagedKeysConfig: {
  aggregationCa: "projects/KEY_PROJECT_ID/locations/LOCATION/caPools/aggregation-ca-pool"
  clusterCa: "projects/KEY_PROJECT_ID/locations/LOCATION/caPools/cluster-ca-pool"
  etcdApiCa: "projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-api-ca-pool"
  etcdPeerCa: "projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-peer-ca-pool"
  serviceAccountSigningKeys: [
    0: "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1"
  ]
  serviceAccountVerificationKeys: [
    0: "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1"
  ]
}

Use a CLI gcloud para validar chaves e ACs

Para verificar se o cluster usa as ACs e as chaves que criou, execute o seguinte comando:

gcloud container clusters describe example-cluster \
    --location=LOCATION \
    --project=CLUSTER_PROJECT_ID

A saída deve incluir o campo userManagedKeysConfig, como no exemplo seguinte:

# lines omitted for clarity
userManagedKeysConfig:
  sa-signing-key: projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1
  sa-verification-key: projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1
  cluster-ca: projects/KEY_PROJECT_ID/locations/LOCATION/caPools/cluster-ca-pool
  etcd-peer-ca: projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-peer-ca-pool
  etcd-api-ca: projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-api-ca-pool
  aggregation-ca: projects/KEY_PROJECT_ID/locations/LOCATION/caPools/aggregation-ca-pool