Sobre as chaves de criptografia da Apigee

Esta página se aplica à Apigee, mas não à Apigee híbrida.

Confira a documentação da Apigee Edge.

Nesta seção, descrevemos os tipos de chaves de criptografia e como criá-las.

Durante o processo de configuração da Apigee, você gera as seguintes chaves de criptografia do Cloud Key Management Service:

Tipo de chave Criado quando Descrição
Chave de criptografia do plano de controle Etapa 3: criar uma organização (assinatura)

Etapa 3: configurar a hospedagem e a criptografia (pagamento por utilização)

Ao usar a residência de dados, a Apigee usa essa chave para criptografar os dados do Analytics armazenados no BigQuery dentro do projeto de locatário.

Criptografa proxies de API, servidores de destino, Truststores e Keystores, dados analíticos e tudo mais compartilhado entre ambientes de execução.

A Apigee vai solicitar duas chaves de CMEK do plano de controle. Essa chave e uma chave de criptografia de dados do consumidor da API.

O local da chave de criptografia do plano de controle precisa corresponder ao do plano de controle.

Chave de criptografia de dados do consumidor da API Etapa 3: criar uma organização (assinatura)

Etapa 3: configurar a hospedagem e a criptografia (pagamento por utilização)

Ao usar a residência de dados, a Apigee precisa de uma única chave de região, além da chave de criptografia do plano de controle, que é usada para serviços que estão disponíveis apenas em uma única região. Por exemplo, Dataflow e Cloud SQL.

O local da chave de criptografia de dados do consumidor da API precisa estar no local do plano de controle.

Chave de criptografia do banco de dados no ambiente de execução Etapa 3: criar uma organização da Apigee (assinatura)

Etapa 3: configurar a hospedagem e a criptografia (pagamento por utilização)

Criptografa dados de aplicativos como KVMs, cache e chaves secretas de cliente, que são armazenadas no banco de dados.

Há uma chave de criptografia do banco de dados de ambiente de execução por organização. Todas as instâncias/regiões em uma organização compartilham a mesma chave de criptografia do banco de dados de ambiente de execução.

A chave de criptografia do banco de dados do ambiente de execução é compatível com todos os locais do Cloud KMS que também são compatíveis com o Cloud HSM e o Cloud EKM. O Google recomenda o uso de um local multirregional (como us ou europe) ou um local birregional (eur5, nam4) ao criar essa chave.

O local da chave de criptografia do banco de dados de ambiente de execução precisa estar no local do plano de controle ao usar a residência de dados.

A escolha do local do keyring depende do tipo de instalação usado: o assistente de provisionamento da Apigee não permite escolher um local para ele, ele escolhe o local para você. Se você usar a linha de comando, poderá escolher o local do keyring.

Chave de criptografia de disco Etapa 5: criar uma instância de ambiente de execução da Apigee (assinatura)

Etapa 3: configurar a hospedagem e a criptografia (pagamento por utilização)

Criptografa dados da instância do ambiente de execução antes de serem gravados no disco.

Os tipos de dados criptografados incluem sistema de gerenciamento de chaves (KMS, na sigla em inglês). Mapas de chave-valor (KVMs), definições de cota, buckets e contadores, e todos os dados armazenados em cache. Os dados do KMS incluem produtos de API, desenvolvedores, apps de desenvolvedor, tokens OAuth (incluindo tokens de acesso, tokens de atualização e códigos de autorização) e chaves de API.

Essa chave está localizada na mesma região da instância do ambiente de execução. Ao criar uma nova chave, corresponda o local da chave à localização da instância do ambiente de execução.

Cada combinação de instância/região tem a própria chave de criptografia de disco.

Pontos principais

Lembre-se do seguinte ao criar as chaves de criptografia do banco de dados e do disco de execução:

  • O local da chave de criptografia do banco de dados de ambiente de execução da Apigee é compatível com todos os locais do Cloud KMS compatíveis com o Cloud HSM e o Cloud EKM.
  • O local da chave de criptografia de disco precisa corresponder ao local do ambiente de execução da instância em que a chave é usada.
  • Depois de definido, não é possível alterar o local de uma das chaves.
  • Todas as chaves precisam estar em um keyring.
  • As chaves de diferentes tipos precisam estar em keyrings separados. As chaves de criptografia de disco não podem estar no mesmo keyring que a chave de criptografia do banco de dados do tempo de execução.
  • As chaves precisam ter um purpose. Se usar a linha de comando para gerar suas novas chaves, defina purpose como encryption. Se você usar o console do Google Cloud, escolha Criptografia/descriptografia simétrica para essa finalidade.
  • As chaves são definidas por um caminho de chave que usa o seguinte padrão:
    projects/PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME

Como listar chaves existentes

Se você já tiver criado novas chaves de criptografia do Cloud KMS para a Apigee, poderá usá-las, em vez de criar novas chaves durante a configuração.

Para listar todas as chaves KMS em um keyring:

Execute o comando gcloud kms keys list.

gcloud kms keys list --keyring KEY_RING_NAME --location KEY_RING_LOCATION

Substitua:

  • KEY_RING_NAME: o nome do keyring; Por exemplo, my-key-ring.
  • KEY_RING_LOCATION: o local físico do keyring. Por exemplo, us-west1.

Também é possível ver suas chaves no console do Google Cloud.

Como gerar novas chaves na linha de comando

É possível criar um keyring e uma chave na linha de comando ou no console do Google Cloud.

Cada tipo de chave precisa ter o próprio keyring. Por exemplo, as chaves de criptografia de disco podem ser armazenadas em um keyring, mas a chave de criptografia do banco de dados do ambiente de execução precisa ser armazenada em um keyring separado.

As etapas a seguir descrevem como criar um keyring e uma chave, além de conceder acesso para que o agente de serviço da Apigee use a nova chave. Crie keyrings e chaves para o plano de controle (se estiver usando a residência de dados), o banco de dados de ambiente de execução e o disco de ambiente de execução.

  1. Crie um novo keyring usando o comando gcloud kms keyrings create:

    Plano de controle

    Quando a residência de dados estiver ativada, crie um keyring para o plano de controle e outro para a região de dados do consumidor.

    gcloud kms keyrings create CONTROL_PLANE_KEY_RING_NAME \
    --location CONTROL_PLANE_LOCATION \
    --project PROJECT_ID
    gcloud kms keyrings create CONSUMER_DATA_KEY_RING_NAME \
    --location CONSUMER_DATA_REGION \
    --project PROJECT_ID

    Substitua:

    • CONTROL_PLANE_KEY_RING_NAME: o nome do keyring do plano de controle.
    • CONTROL_PLANE_LOCATION: o local físico em que os dados do plano de controle da Apigee serão armazenados.
    • PROJECT_ID: o ID do projeto do Google Cloud.
    • CONSUMER_DATA_KEY_RING_NAME: o nome do keyring de dados do consumidor.
    • CONSUMER_DATA_REGION: uma sub-região da região do plano de controle. Você precisa especificar CONTROL_PLANE_LOCATION e CONSUMER_DATA_REGION.

    Banco de dados do ambiente de execução

    gcloud kms keyrings create RUNTIMEDB_KEY_RING_NAME \
      --location RUNTIMEDB_KEY_LOCATION \
      --project PROJECT_ID

    Substitua:

    • RUNTIMEDB_KEY_RING_NAME: o nome do keyring do banco de dados que você está criando.
    • RUNTIMEDB_KEY_LOCATION: o local físico do keyring do banco de dados.
    • PROJECT_ID: o ID do projeto do Google Cloud.

    O local da chave de criptografia do banco de dados do Apigee é compatível com todos os locais do Cloud KMS compatíveis com o Cloud HSM e o Cloud EKM.

    Disco de ambiente de execução

    gcloud kms keyrings create RUNTIMEDISK_KEY_RING_NAME \
      --location RUNTIMEDISK_KEY_LOCATION \
      --project PROJECT_ID

    Substitua:

    • RUNTIMEDISK_KEY_RING_NAME: o nome do keyring do disco que você está criando.
    • RUNTIMEDISK_KEY_LOCATION: o local físico do keyring do disco.
    • PROJECT_ID: o ID do projeto do Google Cloud.

    Verifique se o keyring do disco está definido para o mesmo local que a instância. Cada instância e keyring têm o próprio local.

    gcloud kms keyrings list \
    --location  \
    --project $PROJECT_ID

    gcloud kms keyrings describe $DISK_KEY_RING_NAME \
    --location  \
    --project $PROJECT_ID
  2. O nome do keyring precisa ser exclusivo para sua organização. Se você criar outras regiões, os nomes dos keyrings dessas regiões não poderão ser iguais aos nomes dos keyrings existentes.

  3. Crie uma chave usando o comando kms keys create:

    Plano de controle

    Quando a residência de dados estiver ativada, crie um keyring para o plano de controle e outro para a região de dados do consumidor.

    gcloud kms keys create CONTROL_PLANE_KEY_NAME \
    --keyring CONTROL_PLANE_KEY_RING_NAME \
    --location CONTROL_PLANE_LOCATION \
    --purpose "encryption" \
    --project PROJECT_ID
    gcloud kms keys create CONSUMER_DATA_KEY_NAME \
    --keyring CONSUMER_DATA_KEY_RING_NAME \
    --location CONSUMER_DATA_REGION \
    --purpose "encryption" \
    --project PROJECT_ID

    Substitua:

    • CONTROL_PLANE_KEY_NAME: o nome da chave do plano de controle.
    • CONTROL_PLANE_KEY_RING_NAME: o nome do keyring do plano de controle.
    • CONTROL_PLANE_LOCATION: o local físico em que os dados do plano de controle da Apigee serão armazenados.
    • PROJECT_ID: o ID do projeto do Google Cloud.
    • CONSUMER_DATA_KEY_NAME: o nome da chave de dados do consumidor.
    • CONSUMER_DATA_KEY_RING_NAME: o nome do keyring de dados do consumidor.
    • CONSUMER_DATA_REGION: uma sub-região da região do plano de controle. Você precisa especificar CONTROL_PLANE_LOCATION e CONSUMER_DATA_REGION.

    Banco de dados do ambiente de execução

    gcloud kms keys create RUNTIMEDB_KEY_NAME \
      --keyring RUNTIMEDB_KEY_RING_NAME \
      --location RUNTIMEDB_KEY_LOCATION \
      --purpose "encryption" \
      --project PROJECT_ID

    Substitua:

    • RUNTIMEDB_KEY_NAME: o nome da chave do banco de dados que você está criando.
    • RUNTIMEDB_KEY_RING_NAME: o nome do keyring do banco de dados que você está criando.
    • RUNTIMEDB_KEY_LOCATION: o local físico do keyring do banco de dados.
    • PROJECT_ID: o ID do projeto do Google Cloud.

    Disco de ambiente de execução

    gcloud kms keys create RUNTIMEDISK_KEY_NAME \
      --keyring RUNTIMEDISK_KEY_RING_NAME \
      --location RUNTIMEDISK_KEY_LOCATION \
      --purpose "encryption" \
      --project PROJECT_ID

    Substitua:

    • RUNTIMEDISK_KEY_NAME: o nome da chave de disco que você está criando.
    • RUNTIMEDISK_KEY_RING_NAME: o nome do keyring do disco que você está criando.
    • RUNTIMEDISK_KEY_LOCATION: o local físico do keyring do disco.
    • PROJECT_ID: o ID do projeto do Google Cloud.

    Esse comando cria a chave e a adiciona ao keyring.

    Ao se referir a uma chave, use o ID da chave.

  4. Conceda acesso para que o agente de serviço da Apigee use a nova chave com o comando gcloud kms keys add-iam-policy-binding:

    Plano de controle

    Quando a residência de dados estiver ativada, crie um keyring para o plano de controle e outro para a região de dados do consumidor.

    gcloud kms keys add-iam-policy-binding CONTROL_PLANE_KEY_NAME \
    --location CONTROL_PLANE_LOCATION \
    --keyring CONTROL_PLANE_KEY_RING_NAME \
    --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
    --project PROJECT_ID
    
    gcloud kms keys add-iam-policy-binding CONSUMER_DATA_KEY_NAME \
    --location CONSUMER_DATA_REGION \
    --keyring CONSUMER_DATA_KEY_RING_NAME \
    --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
    --project PROJECT_ID
    

    Substitua:

    • CONTROL_PLANE_KEY_NAME: o nome da chave do plano de controle.
    • CONTROL_PLANE_LOCATION: o local físico em que os dados do plano de controle da Apigee serão armazenados.
    • CONTROL_PLANE_KEY_RING_NAME: o nome do keyring do plano de controle.
    • PROJECT_NUMBER: o número do projeto do Google Cloud.
    • PROJECT_ID: o ID do projeto do Google Cloud.
    • CONSUMER_DATA_KEY_NAME: o nome da chave de dados do consumidor.
    • CONSUMER_DATA_REGION: uma sub-região da região do plano de controle. Você precisa especificar CONTROL_PLANE_LOCATION e CONSUMER_DATA_REGION.
    • CONSUMER_DATA_KEY_RING_NAME: o nome do keyring de dados do consumidor.

    Banco de dados do ambiente de execução

    gcloud kms keys add-iam-policy-binding RUNTIMEDB_KEY_NAME \
      --location RUNTIMEDB_KEY_LOCATION \
      --keyring RUNTIMEDB_KEY_RING_NAME \
      --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
      --project PROJECT_ID

    Substitua:

    • RUNTIMEDB_KEY_NAME: o nome da chave do banco de dados que você está criando.
    • RUNTIMEDB_KEY_RING_NAME: o nome do keyring do banco de dados que você está criando.
    • RUNTIMEDB_KEY_LOCATION: o local físico do keyring do banco de dados.
    • PROJECT_NUMBER: o número do projeto do Google Cloud.
    • PROJECT_ID: o ID do projeto do Google Cloud.

    Disco de ambiente de execução

    gcloud kms keys add-iam-policy-binding RUNTIMEDISK_KEY_NAME \
      --location RUNTIMEDISK_KEY_LOCATION \
      --keyring RUNTIMEDISK_KEY_RING_NAME \
      --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
      --project PROJECT_ID

    Substitua:

    • RUNTIMEDISK_KEY_NAME: o nome da chave de disco que você está criando.
    • RUNTIMEDISK_KEY_RING_NAME: o nome do keyring do disco que você está criando.
    • RUNTIMEDISK_KEY_LOCATION: o local físico do keyring do disco.
    • PROJECT_NUMBER: o número do projeto do Google Cloud.
    • PROJECT_ID: o ID do projeto do Google Cloud.

    Esse comando vincula a chave ao agente de serviços da Apigee.

    Após a conclusão dessa solicitação, gcloud responde com algo semelhante ao seguinte:

    Updated IAM policy for key [runtime].
    bindings:
    - members:
    - serviceAccount:service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com
    role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    etag: BwWqgEuCuwk=
    version: 1

    Se você receber um erro, faça o seguinte:

    INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.

    Verifique se você usou o número do projeto e não o nome do projeto no endereço de e-mail da conta de serviço.

    Para verificar se a chave está vinculada ao agente de serviço da Apigee:

    gcloud kms keys get-iam-policy $DISK_KEY_NAME \
      --keyring $DISK_KEY_RING_NAME \
      --location  \
      --project $PROJECT_ID

    gcloud kms keys describe $DISK_KEY_NAME \
      --keyring $DISK_KEY_RING_NAME \
      --location  \
      --project $PROJECT_ID

Como gerar novas chaves usando o console do Google Cloud

É possível gerar novas chaves usando o console, conforme descrito em Criar uma chave de criptografia simétrica.

Ao usar o Console para criar uma nova chave:

  • Para a chave de criptografia do banco de dados do ambiente de execução, defina o local como qualquer local do Cloud KMS compatível com o Cloud HSM e o Cloud EKM. A IU não permite que você escolha qualquer outro local para a chave. Por isso, ela corresponderá ao que você escolheu no keyring.
  • Depois de criar a chave, veja o caminho no painel Chaves criptográficas clicando em Mais ao lado da chave e selecionando Copiar o nome do recurso.

Conseguir o ID da chave

Ao se referir a um recurso do Cloud Key Management Service usando a API Cloud KMS ou a CLI do Google Cloud, você usa o ID do recurso. Consiga o ID da chave com o comando gcloud kms keys list:

Plano de controle

Quando a residência de dados está ativada, há um keyring para o plano de controle e outro para a região de dados do consumidor.

gcloud kms keys list \
--location=CONTROL_PLANE_LOCATION \
--keyring=CONTROL_PLANE_KEY_RING_NAME \
--project=PROJECT_ID

gcloud kms keys list \
--location=CONSUMER_DATA_REGION \
--keyring=CONSUMER_DATA_KEY_RING_NAME \
--project=PROJECT_ID

O ID da chave tem a seguinte sintaxe (semelhante a um caminho de arquivo):

projects/PROJECT_ID/locations/CONTROL_PLANE_LOCATION/keyRings/CONTROL_PLANE_KEY_RING_NAME/cryptoKeys/CONTROL_PLANE_KEY_NAME

Banco de dados do ambiente de execução

gcloud kms keys list \
--location=RUNTIMEDB_KEY_LOCATION \
--keyring=RUNTIMEDB_KEY_RING_NAME \
--project=PROJECT_ID

O ID da chave tem a seguinte sintaxe (semelhante a um caminho de arquivo):

projects/PROJECT_ID/locations/RUNTIMEDB_KEY_LOCATION/keyRings/RUNTIMEDB_KEY_RING_NAME/cryptoKeys/RUNTIMEDB_KEY_NAME

Disco de ambiente de execução

gcloud kms keys list \
  --location=RUNTIMEDISK_KEY_LOCATION \
  --keyring=RUNTIMEDISK_KEY_RING_NAME \
  --project=PROJECT_ID

O ID da chave tem a seguinte sintaxe (semelhante a um caminho de arquivo):

projects/PROJECT_ID/locations/RUNTIMEDISK_KEY_LOCATION/keyRings/RUNTIMEDISK_KEY_RING_NAME/cryptoKeys/RUNTIMEDISK_KEY_NAME

Exemplo:

NAME: projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key
PURPOSE: ENCRYPT_DECRYPT
ALGORITHM: GOOGLE_SYMMETRIC_ENCRYPTION
PROTECTION_LEVEL: SOFTWARE
LABELS:
PRIMARY_ID: 1
PRIMARY_STATE: ENABLED

Também é possível conferir o ID da chave no console do Google Cloud. Para mais informações, consulte Como conseguir um ID de recurso do Cloud KMS.