本页面介绍了在创建客户管理的加密密钥 (CMEK) 政策后,如何验证密钥访问权限。
关键的访问权限验证使用情形
您可以随时重新运行密钥访问权限验证,以找出密钥存在的问题:
密钥停用:如果密钥被停用,则无法再访问卷中的数据。
密钥销毁:如果密钥被销毁,则无法恢复对数据的访问权限。 您可以删除卷以释放容量。如需了解详情,请参阅删除卷。
缺少权限:如果权限被移除,系统会显示授予权限的说明。请参阅授予服务读取密钥的权限。
授予服务读取密钥的权限
如需使用 CMEK 密钥,您必须先授予服务读取指定密钥的权限。NetApp Volumes 提供了正确的 Google Cloud CLI 命令。如需向服务授予所需的 Cloud KMS 密钥权限,您需要创建一个具有相应权限的项目级自定义角色,然后创建一个将该自定义角色绑定到相应服务账号的密钥角色绑定。您需要在 Google 账号中的项目上拥有 Role Administrator (roles/iam.RoleAdmin) 权限,才能创建自定义角色;还需要拥有 Cloud KMS Admin (roles/cloudkms.admin) 权限,才能授予 NetApp Volumes 对密钥的访问权限。
按照以下说明,使用 Google Cloud 控制台或 Google Cloud CLI 授予服务读取密钥的权限。
控制台
前往 Google Cloud 控制台中的 NetApp Volumes 页面。
选择 CMEK 政策。
找到要修改的 CMEK 政策,然后点击显示更多菜单。
选择验证密钥访问权限。
如果您尚未配置密钥访问权限,验证会失败,界面会显示有关如何授予密钥访问权限的说明。运行必需的 Google Cloud CLI 命令后,点击重试以再次运行密钥验证。
如果验证成功,系统会显示一个对话框,表明验证成功。如果验证失败,请点击重试以重新运行密钥检查。
gcloud
运行以下 kms-configs verify 命令:
gcloud netapp kms-configs verify CONFIG_NAME \ --project=PROJECT_ID \ --location=LOCATION
请替换以下信息:
CONFIG_NAME:配置的名称。PROJECT_ID:您要授予访问权限的唯一项目 ID。LOCATION:配置的区域。
如果密钥验证成功,该命令会输出以下消息:
healthy: true
如果密钥验证失败,您必须向密钥授予访问权限。运行以下命令,以确定要授予服务钥匙访问权限的 Google Cloud CLI 命令。您需要拥有 cloudkms.admin 角色才能运行以下命令。
gcloud netapp kms-configs describe CONFIG_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --format="value(instructions)"
如需详细了解其他可选标志,请参阅 Google Cloud SDK 文档 - Cloud Key Management Service。
如需了解详情,请参阅 Cloud Key Management Service 用户文档。
为 CMEK 配置 VPC Service Controls 入站规则
如果您使用 VPC Service Controls,则必须更新入站流量规则,以允许相关项目、区域和服务账号的流量。
使用以下模板配置必要的权限。
{
"ingressFrom": {
"identities": [
"serviceAccount:n-cmek-usea4-1234567890@netapp-cmek-prod.iam.gserviceaccount.com"
],
"sources": [
{
"resource": "projects/112233445566"
}
]
},
"ingressTo": {
"operations": [
{
"methodSelectors": [
{
"method": "*"
}
],
"serviceName": "cloudkms.googleapis.com"
}
],
"resources": [
"projects/1234567890"
]
},
"title": "CMEK for NetApp Volumes"
}
更新模板中的以下字段:
ingressFrom.identities:输入 NetApp Volumes 使用的服务账号的逗号分隔列表。该服务会为每个项目和位置使用一个唯一的服务账号,格式如下:
serviceAccount:n-cmek-location-short-name-your-project-number@netapp-cmek-prod.iam.gserviceaccount.com其中,
location-short-name是区域的简写形式,例如us-east4的简写形式为usea4,your-project-number是项目编号。您可以使用以下命令查询此服务账号名称:
gcloud netapp kms-configs describe NAME --location LOCATION --format="value(serviceAccount)"
请替换以下信息:
NAME:CMEK 政策的名称。LOCATION:CMEK 政策所在的区域。
模板中的示例显示了
us-east4区域中 Google 项目1234567890的服务账号名称。ingressTo.resources:输入包含卷的项目的项目编号。模板中的示例使用
projects/1234567890。ingressFrom.sources:输入服务使用的后端项目的英文逗号分隔列表。您必须为需要托管 CMEK 卷的每个 Google 区域添加一个条目。如需获取您所在区域的后端项目编号,请与 Google Cloud Customer Care 团队联系。在模板中,
projects/112233445566是一个占位符,您必须将其替换为相应区域的后端项目编号。
您无法为 cloudkms.googleapis.com 服务指定各个方法;您必须使用 * 来允许所有方法。