为组织配置数据驻留功能

本文档介绍了如何预配 Apigee 组织,使其仅具有静态数据驻留或具有高级数据驻留。

另请参阅数据驻留简介。

仅为组织配置静态数据驻留

作为 Apigee 管理员,若要仅在静态数据驻留的情况下预配组织,以限制数据存储位置,请使用可用的付费组织预配选项。请务必在预配期间选中启用数据驻留复选框。

为组织配置高级数据驻留功能

作为 Apigee 管理员,若要为组织配置高级数据驻留功能,包括数据存储(静态)、处理(使用中)和传输(传输中),您需要执行以下步骤。

# 步骤 说明 执行者
1 创建 Assured Workloads 文件夹 在您的 Google Cloud 组织中创建一个 Assured Workloads 文件夹,以设置并强制执行所需的组织政策,从而仅允许在允许的位置使用资源。 Google Cloud 具有 Assured Workloads 管理权限的管理员
2 使用高级数据驻留功能进行配置 使用可用的付费组织配置选项,为您的付费组织配置高级数据驻留功能。

您必须使用管辖区控制台访问 Apigee 界面,或使用区域级端点访问 Apigee API,具体取决于您的控制平面位置。

Apigee Organization admin

创建 Assured Workloads 文件夹

注意:您必须是具有 Assured Workloads 管理权限的 Google Cloud 管理员,才能设置 Assured Workloads 文件夹。

借助 Assured Workloads,组织可以对 Google Cloud 资源应用并强制执行监管、区域和主权控制措施。

使用 Google Cloud 控制台,您可以在 Google Cloud 组织中创建 Assured Workloads 文件夹,并根据监管要求选择控制措施套餐。控制包是一组控制措施,这些控制措施组合在一起时,可支持合规框架、法规或规章的基准。控制软件包会设置并强制执行所需的组织政策限制条件,以实现以下目的:

  • 将资源使用限制为仅限支持的产品
  • 仅允许在允许的位置创建或使用资源

如需详细了解 Assured Workloads,请参阅 Assured Workloads 概览。

使用高级数据驻留功能进行配置

注意:您必须是 Apigee 组织管理员才能预配具有高级数据驻留功能的付费组织。

作为 Apigee 管理员,使用预配选项之一预配付费组织时,您需要使用管辖区控制台来访问 Apigee 界面,或者在使用 CLI 时使用区域端点。

使用管辖区控制台

在为组织预配高级数据驻留时,您需要使用基于位置的管辖区级控制台来访问 Apigee 界面。使用管辖区控制台预配 Apigee 组织时,系统会自动配置以下字段:

  • 启用数据驻留处于选中状态(且无法取消选中)
  • 控制平面托管管辖区选项会根据所用的管辖区控制台进行过滤
  • 所有其他区域选择器都会经过过滤,仅显示所选控制平面托管管辖区内的位置

如需了解如何访问管辖区级控制台,请参阅管辖区级 Google Cloud 控制台和 Assured Workloads 中的共同责任。

使用区域级端点

在为组织配置高级数据驻留时,请使用以下区域端点:

apigee.CONTROL_PLANE_LOCATION.rep.googleapis.com

其中,CONTROL_PLANE_LOCATION 是将存储 Apigee 控制平面数据的物理位置。如需查看可用的控制平面位置列表,请参阅使用区域级端点实现高级数据驻留。

在配置期间,您负责选择适当的值。如果您使用的位置受现有组织政策禁止,则会收到 Permission Denied 错误。

例如,以下命令会在美国区域中创建一个启用了 CMEK 的 Apigee 组织。 另请参阅 Apigee 组织 API。

curl "https://apigee.us.rep.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID" \
  -X POST
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "$PROJECT_ID",
    "runtimeType": "CLOUD", # Hybrid organizations aren't supported
    "billingType": "$BILLING_TYPE", # Eval organizations aren't supported
    "controlPlaneEncryptionKeyName" : "'"$CONTROL_PLANE_KEY_ID"'",
    "apiConsumerDataLocation" : "'"$CONSUMER_DATA_REGION"'",  # Must be single region in US
    "apiConsumerDataEncryptionKeyName" : "'"$CONSUMER_DATA_KEY_ID"'",
    "authorizedNetwork" : "'"$NETWORK_NAME"'", # Must be created in the US region
    "runtimeDatabaseEncryptionKeyName" : "'"$RUNTIMEDB_KEY_ID"'"
  }'

如何使用 gcloud CLI 创建保护级别为“外部”的 CMEK 密钥

在欧盟区域内预配具有高级数据驻留功能的 Apigee 组织时,您需要创建具有外部保护级别的客户管理的加密密钥 (CMEK)。您必须使用 Google Cloud CLI 创建 CMEK 密钥,因为欧盟管辖区控制台不支持设置外部支持的 CMEK 密钥。此外,您还需要设置外部密钥管理器 (EKM)。

如需创建 CMEK 密钥并设置 EKM,请按照以下部分中所述的步骤操作:

设置 EKM

为欧盟区域创建的 CMEK 密钥必须具有外部保护级别,因此您需要设置 EKM。 如需设置 EKM,请按照以下部分中的说明操作:

为欧盟区域创建 CMEK 密钥

使用下述 gcloud CLI 命令创建欧盟区域所需的以下 CMEK 密钥:

  • 控制平面加密密钥
  • API 使用方数据加密密钥
  • 运行时数据库加密密钥
  • 运行时磁盘加密密钥

如需详细了解如何创建 CMEK 密钥,请参阅 Apigee 加密密钥简介。

重复以下步骤,创建每个必需的 CMEK 密钥:

  1. 使用以下命令在欧盟区域创建密钥环:
    gcloud kms keyrings create DATA_KEY_RING \
          --location LOCATION \
          --project=PROJECT_ID
        
  2. 使用以下命令创建外部密钥:
    gcloud kms keys create DATA_KEY_NAME \
          --keyring=DATA_KEY_RING \
          --location LOCATION \
          --purpose encryption \
          --protection-level external \
          --skip-initial-version-creation \
          --default-algorithm external-symmetric-encryption \
          --project PROJECT_ID
        
  3. 使用以下命令创建指向上一步中设置的 EKM 的密钥版本:
    gcloud kms keys versions create \
      --key DATA_KEY_NAME \
      --keyring DATA_KEY_RING \
      --location LOCATION \
      --external-key-uri "EKM_URI" \
      --primary \
      --project PROJECT_ID
        
  4. 使用以下命令向 Apigee 服务代理授予权限:
    gcloud kms keys add-iam-policy-binding DATA_KEY_NAME \
          --location LOCATION \
          --keyring DATA_KEY_RING \
          --member serviceAccount:service-$(gcloud projects describe $project --format="value(projectNumber)")@gcp-sa-apigee. \
          --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
          --project PROJECT_ID
        

其中:

  • DATA_KEY_RING:控制平面、API 使用方数据、运行时数据库或运行时磁盘密钥环的名称。
  • DATA_KEY_NAME:控制平面、API 使用方数据、运行时数据库或运行时磁盘密钥的名称。
  • LOCATION:密钥环的 Cloud KMS 位置。将此值设置为如下所示:
    • 对于“控制平面加密密钥”,请设置为以下多区域密钥之一:us 或 europe。
    • 对于 API 使用方数据加密密钥、运行时数据库加密密钥和运行时磁盘加密密钥,请设置为以下单区域密钥之一:europe-* 或 us-*。 例如,europe-west1、us-central1 等。
  • EKM_URI:EKM URI。
  • PROJECT_ID: Google Cloud 项目 ID。

配置 gcloud CLI 以使用区域级端点(可选)

您可以使用 gcloud CLI 管理 Apigee 组织。对于大多数组织,gcloud CLI 会自动检测相应的区域端点。如果您的 Apigee 组织名称与 Google Cloud 项目名称一致,则此操作可顺利完成。

不过,在某些情况下,名称可能不一致。例如,如果您将 Apigee 组织从一个 Google Cloud 项目迁移到另一个项目,则 Apigee 组织的名称与其所在的 Google Cloud 项目的名称可能不同。在这种情况下,使用 gcloud CLI 时,您需要执行以下任一操作:

  • 在每个 gcloud CLI 命令中传递 --organization 标志,以指定目标 Apigee 组织。
  • 配置 gcloud CLI 以替换 Apigee 端点,并强制所有命令使用新的区域性端点。

    例如,如需使用美国区域性端点,gcloud CLI 命令如下:

    gcloud config set api_endpoint_overrides/apigee https://apigee.us.rep.googleapis.com/

查看组织的控制平面位置

如果您已预配组织 (PROJECT_ID) 以用于数据驻留,则可以使用 getProjectMapping API 通过执行以下步骤来查看与项目关联的控制平面位置:

  1. 授权 gcloud 使用您的 Google 用户凭据访问 Cloud Platform:
    gcloud auth login
  2. 调用 getProjectMapping API。

    由于所访问的信息是元数据,而不是客户核心内容,因此您可以使用全局或区域级端点来调用 API。以下命令使用全局端点:

    curl -X GET https://apigee.googleapis.com/v1/organizations/PROJECT_ID:getProjectMapping \
        -H "Authorization: Bearer $(gcloud auth print-access-token)"

    其中,PROJECT_ID 是您的 Apigee 组织的名称。

    以下提供了一个响应示例:

    {
      "organization": "my-project",
      "projectIds": [
        "my-project"
      ],
      "projectId": "my-project"
      "location": "us"
    }

迁移 Apigee 组织以支持高级数据驻留

如需将支持静态数据驻留的现有 Apigee 组织迁移为支持高级数据驻留,请执行以下操作:

  1. 将已预配 Apigee 的Google Cloud 项目移动到 Assured Workloads 文件夹。如需了解详情,请参阅迁移工作负载。
  2. 如果您在高级数据驻留功能正式发布之前创建了 Apigee 组织,则需要重新配置全球网络资源,以便将其迁移到所需管辖区内。 否则,您可以跳过此步骤。