本文档介绍了如何配置组织、文件夹或项目,以便可观测性存储分区满足合规性或监管要求。
对于组织、文件夹和项目,可观测性存储分区的默认设置可让您配置以下内容:
- 默认存储位置。
- 每个位置的默认 Cloud Key Management Service 密钥。
资源层次结构中的后代会自动使用这些设置,除非您已为这些后代配置默认设置。
可观测性存储分区的默认设置仅适用于新资源,而不适用于现有资源。
可观测性存储分区设置的默认设置不适用于存储日志数据的日志存储分区。如需了解如何设置默认位置或要求为日志存储分区启用 CMEK,请参阅为 Cloud Logging 配置默认资源设置。
查看观测桶的默认设置
本部分介绍如何查看资源(组织、文件夹或项目)的可观测性存储分区的默认设置。
如需检索可观测性存储分区的默认设置,您必须发出多个 API 命令。第一个命令会返回默认存储位置。第二个命令会返回相应位置的 Cloud KMS 密钥。以下说明适用于 APIs Explorer,您可以使用它从文档页面发出 API 命令。不过,您也可以发出 curl 命令。
本部分介绍的命令适用于特定资源。这些命令的响应仅限于相应资源的用户配置值。这些命令不会返回资源可能使用但为祖先配置的设置。
准备工作
如需获得查看组织、文件夹或项目的可观测性存储分区的默认设置所需的权限,请让您的管理员为您授予组织、文件夹或项目的 Observability Viewer (roles/observability.viewer) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含 observability.settings.get 权限,若要查看组织、文件夹或项目的可观测性存储分区的默认设置,则需要该权限。
获取资源的默认存储位置
如需获取资源的默认存储位置,您可以向特定于资源的端点发送命令,并将该命令的位置设置为 global。响应数据包括默认存储位置和服务账号的名称。如果您需要为资源使用 CMEK,则此服务账号用于检索 Cloud KMS 密钥。
REST
对于要显示其默认设置的资源,请选择相应的端点,然后在 API Explorer 中指定路径参数:
组织:
- API 端点:
organizations.locations.getSettings 路径参数:
organizations/ORGANIZATION_ID/locations/global/settings
文件夹:
- API 端点:
folders.locations.getSettings 路径参数:
folders/FOLDER_ID/locations/global/settings
项目:
路径参数:
projects/PROJECT_ID/locations/global/settings
上述表达式中的变量具有以下含义:
- API 端点:
点击执行。
成功后,该响应是一个
Settings对象。如果default_storage_location字段为空,则表示未设置默认存储位置。例如,如果您发出
getSettings命令并将路径参数设置为组织,则响应类似于以下内容之一:默认存储位置设置为
"us":default_storage_location: "us" service_account_id: service-org-ORGANIZATION_ID@gcp-sa-observability.iam.gserviceaccount.com未设置默认存储位置:
service_account_id: service-org-ORGANIZATION_ID@gcp-sa-observability.iam.gserviceaccount.com
获取资源和位置的默认 Cloud KMS 密钥
Cloud KMS 密钥是区域级资源。它们只能用于加密或解密与密钥存储在同一位置的数据。对于观测桶支持的每个位置,以及每个组织、文件夹或项目,您都可以使用 Cloud KMS 密钥配置观测桶的默认设置。
本部分介绍如何获取资源和位置的默认 Cloud KMS 密钥。
REST
对于要显示其默认设置的资源,请选择相应的端点,然后在 API Explorer 中指定路径参数:
组织:
路径参数:
organizations/ORGANIZATION_ID/locations/LOCATION_ID/settings
文件夹:
- API 端点:
folders.locations.getSettings 路径参数:
folders/FOLDER_ID/locations/LOCATION_ID/settings
项目:
- API 端点:
projects.locations.getSettings 路径参数:
projects/PROJECT_ID/locations/LOCATION_ID/settings
上述表达式中的变量具有以下含义:
点击执行。
成功后,该响应是一个
Settings对象。例如,假设您发出
getSettings命令并将路径参数设置为organizations/ORGANIZATION_ID/locations/LOCATION_ID/settings,则响应类似于以下内容之一:如果未为组织和位置设置 Cloud KMS 密钥,则响应仅列出服务账号:
service_account_id: service-org-ORGANIZATION_ID@gcp-sa-observability.iam.gserviceaccount.com为组织和位置设置 Cloud KMS 密钥后,响应会包含服务账号和 Cloud KMS 密钥名称:
name: "organizations/ORGANIZATION_ID/locations/LOCATION_ID/settings" service_account_id: service-org-ORGANIZATION_ID@gcp-sa-observability.iam.gserviceaccount.com kms_key_name: "projects/my-kms-project/locations/LOCATION_ID/keyRings/my-key-ring/cryptoKeys/my-key"
设置观测性存储分区的默认设置
本部分介绍了如何为组织、文件夹或项目等资源配置可观测性存储分区的默认设置。
如果您计划为某个资源和位置要求使用 CMEK,请先为该资源和位置对配置可观测性存储分区的默认设置,然后再设置默认存储位置。 为资源和位置配置默认设置时,您需要指定要使用的 Cloud KMS 密钥。
以下说明适用于 APIs Explorer,您可以使用它从文档页面发出 API 命令。不过,您也可以发出 curl 命令。
配置示例
本部分列出了常见用例。
要求新存储分区位于特定位置
如需要求组织中新创建的系统可观测性存储分区位于 us 位置,请将组织的默认存储位置设置为 us。
如需替换组织级设置,并要求在名为 my-eu-projects 的子文件夹中新建的系统创建的可观测性存储分区位于 eu 区域,请将 my-eu-projects 文件夹的默认存储位置设置为 eu。
要求新存储分区位于特定位置并使用 CMEK
如需要求组织中所有新创建的系统可观测性存储分区都位于 us 位置并使用 CMEK,请执行以下操作:
为组织和
us位置配置可观测性存储分区的默认设置,以指定 Cloud KMS 密钥。将组织的默认存储位置设置为
us。
准备工作
如果您仅打算设置默认存储位置,则可以跳过 Google Cloud CLI 设置,并且不需要任何 Cloud KMS 角色。
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
如需获得为组织、文件夹或项目设置可观测性存储分区默认设置所需的权限,请让管理员向您授予组织、文件夹或项目的以下 IAM 角色:
-
Observability Editor (
roles/observability.editor) -
Cloud KMS Admin (
roles/cloudkms.admin)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色包含为组织、文件夹或项目设置可观测性存储分区默认设置所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需为组织、文件夹或项目设置可观测性存储分区的默认设置,您必须拥有以下权限:
-
observability.settings.get -
observability.settings.update -
cloudkms.cryptoKeys.getIamPolicy -
cloudkms.cryptoKeys.setIamPolicy
-
Observability Editor (
如果您计划要求使用 CMEK,请确保您在所需位置拥有 Cloud KMS 密钥。如有必要,请创建 Cloud KMS 密钥环和 Cloud KMS 密钥。
确定您计划更新其可观测性存储分区默认设置的资源。此资源可以是组织、文件夹或项目。
如果您为组织或文件夹配置默认设置,则这些设置会应用于相应组织或文件夹的所有后代。如果您为某个项目配置了可观测性存储分区的默认设置,则这些设置仅适用于该项目。
确定要用于加密和解密的 Cloud KMS 密钥。
Cloud KMS 密钥是区域性的。例如,如果您计划要求新创建的系统可观测性存储分区位于
us位置,则需要一个位于us位置的 Cloud KMS 密钥。确定资源的服务账号。
例如,如果您希望组织中所有新创建的系统可观测性存储分区都位于
us位置并使用 CMEK,则向global位置发出getSettings调用,并将路径形参设置为组织。响应数据会列出组织的服务账号:service_account_id: service-org-ORGANIZATION_ID@gcp-sa-observability.iam.gserviceaccount.com为上一步中确定的服务账号授予 Cloud KMS CryptoKey Encrypter/Decrypter (
roles.cloudkms.cryptoKeyEncrypterDecrypter角色,以便使用您要用于加密和解密数据的 Cloud KMS 密钥。此角色绑定适用于特定的 Cloud KMS 密钥。
gcloud CLI
运行
gcloud kms keys add-iam-policy-binding命令:gcloud kms keys add-iam-policy-binding KMS_KEY_NAME \ --project=KMS_PROJECT_ID \ --member=serviceAccount:SERVICE_ACCT_NAME@gcp-sa-observability.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --location=LOCATION_ID \ --keyring=KMS_KEY_RING在运行上面的命令之前,请先进行以下替换:
- KMS_KEY_NAME:密钥的名称。
- KMS_PROJECT_ID:运行 Cloud KMS 的 Google Cloud 项目的唯一字母数字标识符,由 Google Cloud 项目名称和随机分配的编号组成。如需了解如何获取此标识符,请参阅标识项目。
- SERVICE_ACCT_NAME:您在上一步中确定的资源的服务账号的名称。
- LOCATION_ID:Cloud KMS 密钥的位置。
- KMS_KEY_RING:Cloud KMS 密钥环的名称。
Google Cloud 控制台
- 在 Google Cloud 控制台中,前往密钥管理页面。
- 选择包含密钥的密钥环的名称。
选中相应密钥对应的复选框。
权限标签变为可用。
在添加成员对话框中,指定您授予访问权限的 Google Cloud Observability 服务账号的电子邮件地址。
在选择角色菜单中,选择 Cloud KMS CryptoKey Encrypter/Decrypter。
点击 Add(添加)。
对于要设置默认设置的资源,请选择相应的端点,然后在 API Explorer 中指定路径参数:
组织:
- API 端点:
organizations.locations.updateSettings 路径参数:
organizations/ORGANIZATION_ID/locations/LOCATION_ID/settings
文件夹:
- API 端点:
folders.locations.updateSettings 路径参数:
folders/FOLDER_ID/locations/LOCATION_ID/settings
项目:
- API 端点:
projects.locations.updateSettings 路径参数:
projects/PROJECT_ID/locations/LOCATION_ID/settings
上述表达式中的变量具有以下含义:
- API 端点:
按如下所示设置 updateMask 字段:
updateMask=kmsKeyName按如下方式配置请求正文:
{ "kmsKeyName"="projects/KMS_PROJECT_ID/locations/LOCATION_ID/keyRings/KMS_KEY_RING/cryptoKeys/KMS_KEY_NAME" }在输入值之前,请先进行以下替换:
- KMS_PROJECT_ID:运行 Cloud KMS 的 Google Cloud 项目的唯一字母数字标识符,由 Google Cloud 项目名称和随机分配的编号组成。如需了解如何获取此标识符,请参阅标识项目。
- LOCATION_ID:Cloud KMS 密钥的位置。
- KMS_KEY_RING:Cloud KMS 密钥环的名称。
- KMS_KEY_NAME:密钥的名称。
"kmsKeyName"的值是密钥的完全限定名称。点击执行。
成功后,该响应是一个
Settings对象。例如,假设您发出
updateSettings命令来设置 Cloud KMS 密钥,并将路径参数设置为organizations/ORGANIZATION_ID/locations/LOCATION_ID/settings,则响应类似于以下内容:name: "organizations/ORGANIZATION_ID/locations/LOCATION_ID/settings" service_account_id: service-org-ORGANIZATION_ID@gcp-sa-observability.iam.gserviceaccount.com kms_key_name: "projects/KMS_PROJECT_ID/locations/LOCATION_ID/keyRings/KMS_KEY_RING/cryptoKeys/KMS_KEY_NAME"- 向资源的相应服务账号授予允许该服务账号加密和解密数据的 IAM 角色。此角色适用于特定的 Cloud KMS 密钥,并且该密钥位于特定位置。
- 使用 Cloud KMS 密钥信息,为资源和密钥位置配置可观测性存储分区的默认设置。
对于要设置默认设置的资源,请选择相应的端点,然后在 API Explorer 中指定路径参数:
组织:
- API 端点:
organizations.locations.updateSettings 路径参数:
organizations/ORGANIZATION_ID/locations/global/settings
文件夹:
- API 端点:
folders.locations.updateSettings 路径参数:
folders/FOLDER_ID/locations/global/settings
项目:
- API 端点:
projects.locations.updateSettings 路径参数:
projects/PROJECT_ID/locations/global/settings
上述表达式中的变量具有以下含义:
- API 端点:
按如下所示设置 updateMask 字段:
updateMask=defaultStorageLocation按如下方式配置请求正文:
{ "defaultStorageLocation"="DEFAULT_STORAGE_LOCATION" }将 DEFAULT_STORAGE_LOCATION 替换为受支持的可观测性存储桶位置。
例如,假设您希望组织中所有新创建的系统可观测性存储分区都位于
us位置并使用 CMEK。在之前的步骤中,您向组织的服务账号授予了 IAM 角色,使其能够使用位于us位置的 Cloud KMS 密钥来加密和解密数据。您可以通过将 DEFAULT_STORAGE_LOCATION 设置为us来完成配置。点击执行。
成功后,该响应是一个
Settings对象。例如,如果您发出 am
updateSettings命令并将路径参数设置为某个组织,并将默认存储位置设置为us,则响应如下所示:default_storage_location: "us" service_account_id: service-org-ORGANIZATION_ID@gcp-sa-observability.iam.gserviceaccount.com如果找到 Cloud KMS 密钥,则使用该密钥对存储在新观测桶中的数据进行加密。
如果找不到 Cloud KMS 密钥,则新的可观测性存储桶不会使用 CMEK。
- 您无法查询存储的数据。
- Google Cloud Observability 会缓冲最近 3 小时的数据。早于此三小时滑动窗口的数据可能会被舍弃。
- 对于永久性数据存储,在写入数据后的 48 小时内,Cloud KMS 密钥必须至少连续 24 小时可用且可访问。如果在此期间 Cloud KMS 密钥不可用且无法访问,数据可能无法完整保留到存储中,可能会被舍弃。
向资源的服务账号授予对密钥的访问权限
对于您计划配置默认设置的资源,请向其服务账号授予角色:
为资源和位置设置默认 Cloud KMS 密钥
在上一步中,您已向资源的服务账号授予了使用特定 Cloud KMS 密钥加密和解密数据的权限。例如,您可能已向组织的服务账号授予 IAM 角色,使其能够访问位于 us 位置的 Cloud KMS 密钥。
在此步骤中,您需要针对相应资源和 Cloud KMS 密钥的位置,使用密钥信息更新可观测性存储分区的默认设置。例如,在此步骤中,您可能会将组织和 us 位置的可观测性存储分区的默认设置配置为同样位于 us 位置的 Cloud KMS 密钥。
REST
为资源设置默认存储位置
此步骤介绍了如何为资源(组织、文件夹或项目)设置默认存储位置。资源层次结构中的所有后代都会自动使用默认存储位置,除非您已为某些后代配置了默认存储位置。
例如,如果您将组织的默认存储位置设置为 us 位置,那么该组织中新创建的系统可观测性存储分区将位于 us 位置。如果您希望文件夹或项目具有不同的默认存储位置,请为该文件夹或项目配置可观测性存储分区的默认设置。
如果您希望资源中由系统创建的可观测性存储分区使用 CMEK,请在为资源设置默认存储位置之前完成以下步骤:
REST
如需为组织、文件夹或项目设置默认存储位置,请执行以下操作:
更新资源的默认存储位置
如需更新组织、文件夹或项目的默认存储位置,请按照设置默认存储位置时的相同步骤操作。
管理 Cloud KMS 密钥
以下部分介绍了如何更改、停用 Cloud KMS 密钥或撤消对 Cloud KMS 密钥的访问权限。
更新资源和位置的默认 Cloud KMS 密钥
如需更新特定资源和位置的 Cloud KMS 密钥,请按照设置 Cloud KMS 密钥时的相同步骤操作。
取消设置资源和位置的默认 Cloud KMS 密钥
如需取消设置或清除特定资源和位置的 Cloud KMS 密钥,请按照为位置设置默认 Cloud KMS 密钥中所述的相同步骤操作。不过,在配置请求正文时,请将键的值设置为空字符串。
{
"kmsKeyName"=""
}
如果资源没有默认 Cloud KMS 密钥,系统会搜索资源的祖先以查找默认 Cloud KMS 密钥:
撤消对资源和位置的密钥访问权限
为具有 Cloud KMS 密钥的资源和位置配置可观测性存储分区的默认设置时,您必须向资源的服务账号授予该密钥的 Cloud KMS CryptoKey Encrypter/Decrypter (roles.cloudkms.cryptoKeyEncrypterDecrypter 角色。
如果您不希望某个资源有权访问密钥,请移除该密钥的 IAM 绑定。您可以运行 gcloud kms keys remove-iam-policy-binding 命令来移除此绑定。
角色变更可能需要几个小时才能完全传播开来。
密钥轮替行为
当与 Google Cloud 组织或文件夹关联的 Cloud KMS 密钥轮替使用时,Google Cloud Observability 不会自动轮替临时灾难恢复文件的加密密钥。现有恢复文件将继续使用在创建它们时所用的密钥版本。新的恢复文件会使用当前的主要密钥版本。
如需了解详情,请参阅密钥轮替。
限制
将可观测性存储分区的默认设置配置为具有 CMEK 设置时,存在以下已知限制。
由于密钥不可用而导致降级
Google Cloud Observability 使用 Cloud KMS API 来访问 Cloud KMS 密钥和 Cloud EKM 密钥。这两种类型的密钥都可能会变得不可用。
如果密钥不可用,则会发生以下情况: