本页面介绍了如何创建、停用和删除与项目中的服务账号关联的基于哈希的消息身份验证代码 (HMAC)。
准备工作
在 Cloud Storage 中使用此功能之前,您必须满足以下要求:
确保拥有的权限足以支持在所选项目中使用 HMAC 密钥:
如果您拥有该项目,那么您很可能已具备必要的权限。
您应对该项目拥有前缀为
storage.hmacKeys
的 IAM 权限。如需了解如何获取具有这些权限的角色(例如 Storage HMAC Key Admin),请参阅使用 IAM 权限。
您的项目应包含一个您要为其创建 HMAC 密钥的服务账号。如果您目前还没有服务账号,请参阅创建服务账号。
确保已停用以下组织政策限制条件:
constraints/storage.restrictAuthTypes
(必须停用才能进行 HMAC 密钥身份验证)
如需了解如何检查和停用限制条件,请参阅创建和管理组织政策。
创建 HMAC 密钥
如需为服务账号创建 HMAC 密钥,请执行以下操作:
控制台
不支持在 Trusted Cloud 控制台中使用 HMAC 密钥。
命令行
使用 hmac create
命令:
gcloud storage hmac create SERVICE_ACCOUNT_EMAIL
其中,SERVICE_ACCOUNT_EMAIL
是与您的服务账号相关联的电子邮件地址,例如 service-7550275089395@my-pet-project.s3ns-system.iam.gserviceaccount.com
。
如果成功,响应会包含 HMAC 密钥资源,包括 accessId
和 secret
的值。
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Terraform
您可以使用 Terraform 资源创建 HMAC 密钥。此示例还包含用于创建服务账号的资源。
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
,通过POST
hmacKeys 请求调用 JSON API:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/storage/v1/projects/PROJECT_IDENTIFIER/hmacKeys?serviceAccountEmail=SERVICE_ACCOUNT_EMAIL"
其中:
PROJECT_IDENTIFIER
是与您要创建的密钥相关联的项目的 ID 或编号。例如my-pet-project
。SERVICE_ACCOUNT_EMAIL
是与您的服务账号相关联的电子邮件地址。例如service-7550275089395@my-pet-project.s3ns-system.iam.gserviceaccount.com
。
XML API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
,通过POST
HMAC Key 请求调用 XML API:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/?Action=CreateAccessKey&UserName=SERVICE_ACCOUNT_EMAIL"
其中,
SERVICE_ACCOUNT_EMAIL
是与您的服务账号相关联的电子邮件地址,例如service-7550275089395@my-pet-project.s3ns-system.iam.gserviceaccount.com
。
获取 HMAC 密钥信息
如需列出项目的 HMAC 密钥并获取密钥的相关信息,请执行以下操作:
控制台
不支持在 Trusted Cloud 控制台中使用 HMAC 密钥。
命令行
使用
hmac list
命令列出项目中的 HMAC 密钥:gcloud storage hmac list
如果成功,该命令会返回 HMAC 密钥访问 ID 的列表、每个密钥的状态以及与每个密钥关联的服务账号。
使用
hmac describe
命令检索特定密钥的元数据:gcloud storage hmac describe KEY_ACCESS_ID
其中,
KEY_ACCESS_ID
是所需密钥的访问 ID。
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
以下示例检索与项目关联的 HMAC 密钥列表:
以下示例检索特定 HMAC 密钥的信息:
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
以下示例检索与项目关联的 HMAC 密钥列表:
以下示例检索特定 HMAC 密钥的信息:
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
以下示例检索与项目关联的 HMAC 密钥列表:
以下示例检索特定 HMAC 密钥的信息:
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
以下示例检索与项目关联的 HMAC 密钥列表:
以下示例检索特定 HMAC 密钥的信息:
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
以下示例检索与项目关联的 HMAC 密钥列表:
以下示例检索特定 HMAC 密钥的信息:
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
以下示例检索与项目关联的 HMAC 密钥列表:
以下示例检索特定 HMAC 密钥的信息:
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
以下示例检索与项目关联的 HMAC 密钥列表:
以下示例检索特定 HMAC 密钥的信息:
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
以下示例检索与项目关联的 HMAC 密钥列表:
以下示例检索特定 HMAC 密钥的信息:
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
,通过LIST
hmacKeys 请求调用 JSON API:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.s3nsapis.fr/storage/v1/projects/PROJECT_IDENTIFIER/hmacKeys"
其中,
PROJECT_IDENTIFIER
是与您要列出的密钥相关联的项目的 ID 或编号。例如my-pet-project
。
XML API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
,通过GET
HMAC Key 请求调用 XML API:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/?Action=ListAccessKeys&UserName=SERVICE_ACCOUNT_EMAIL"
其中,
SERVICE_ACCOUNT_EMAIL
是与您的服务账号相关联的电子邮件地址,例如service-7550275089395@my-pet-project.s3ns-system.iam.gserviceaccount.com
。
更新 HMAC 密钥的状态
如需切换 HMAC 密钥的活跃或非活跃状态,请执行以下操作:
控制台
不支持在 Trusted Cloud 控制台中使用 HMAC 密钥。
命令行
使用 hmac update
命令:
gcloud storage hmac update ACCESS_KEY_ID STATE
其中:
ACCESS_KEY_ID
是与您要更新的密钥相关联的访问 ID。STATE
是--activate
或--deactivate
。
如果成功,该命令会返回更新后的 HMAC 密钥元数据。
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
以下示例会停用 HMAC 密钥:
以下示例会激活 HMAC 密钥:
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
以下示例会停用 HMAC 密钥:
以下示例会激活 HMAC 密钥:
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
以下示例会停用 HMAC 密钥:
以下示例会激活 HMAC 密钥:
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
以下示例会停用 HMAC 密钥:
以下示例会激活 HMAC 密钥:
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
以下示例会停用 HMAC 密钥:
以下示例会激活 HMAC 密钥:
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
以下示例会停用 HMAC 密钥:
以下示例会激活 HMAC 密钥:
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
以下示例会停用 HMAC 密钥:
以下示例会激活 HMAC 密钥:
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
以下示例会停用 HMAC 密钥:
以下示例会激活 HMAC 密钥:
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。创建一个包含以下信息的 JSON 文件:
{"state": "STATE"}
其中
STATE
是所需的密钥状态。例如INACTIVE
。使用
cURL
通过PUT
HMAC 密钥请求调用 JSON API:curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.s3nsapis.fr/storage/v1/projects/PROJECT_IDENTIFIER/hmacKeys/ACCESS_KEY_ID"
其中:
JSON_FILE_NAME
是您在第 2 步中创建的文件的路径。PROJECT_IDENTIFIER
是与您要更新的密钥相关联的项目的 ID 或编号。例如my-pet-project
。ACCESS_KEY_ID
是与您要更新的密钥相关联的访问 ID。
XML API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
,通过POST
HMAC Key 请求调用 XML API:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/?Action=UpdateAccessKey&AccessKeyId=ACCESS_KEY_ID&Status=STATUS"
其中:
ACCESS_KEY_ID
是与您要更新的密钥相关联的访问 ID。STATUS
是所需的密钥状态。例如Inactive
。
更改 HMAC 密钥的状态时,状态更改最多需要 3 分钟才能传播到 Cloud Storage 系统。因此,在停用 HMAC 密钥后,您应等待至少 3 分钟,然后再删除该密钥。
删除 HMAC 密钥
HMAC 密钥必须处于非活跃状态才能将其删除。 如需删除处于非活跃状态的 HMAC 密钥,请执行以下操作:
控制台
不支持在 Trusted Cloud 控制台中使用 HMAC 密钥。
命令行
使用 hmac delete
命令:
gcloud storage hmac delete ACCESS_KEY_ID
其中,ACCESS_KEY_ID
是与您要删除的密钥相关联的访问 ID。
如果成功,该命令不会返回响应。
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
,通过DELETE
hmacKeys 请求调用 JSON API:curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/storage/v1/projects/PROJECT_IDENTIFIER/hmacKeys/ACCESS_KEY_ID"
其中:
PROJECT_IDENTIFIER
是与您要删除的密钥相关联的项目的 ID 或编号。例如my-pet-project
。ACCESS_KEY_ID
是与您要删除的密钥相关联的访问 ID。
XML API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
,通过POST
HMAC Key 请求调用 XML API:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/?Action=DeleteAccessKey&AccessKeyId=ACCESS_KEY_ID"
其中,
ACCESS_KEY_ID
是与您要删除的密钥相关联的访问 ID。