为组织配置数据驻留功能

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

另请参阅 数据驻留简介

预配仅具有静态数据驻留的组织

作为 Apigee 管理员,如需预配仅具有静态数据驻留的组织 以限制数据的存储位置,请使用其中一个可用的付费组织 预配选项。 请务必在预配期间选中启用数据驻留 复选框。

预配具有高级数据驻留的组织

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

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

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

Apigee 组织管理员

创建 Assured Workloads 文件夹

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

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

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

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

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

预配具有高级数据驻留的组织

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

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

使用管辖区级控制台

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

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

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

使用区域端点

预配具有高级数据驻留的组织时,请使用以下区域端点:

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.iam.gserviceaccount.com \
          --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
          --project PROJECT_ID
        

其中:

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

配置 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 组织,则需要重新配置全局网络资源,以将其迁移到所需管辖区内。否则,您可以跳过此步骤。