本主题介绍了如何创建 Secret、添加 Secret 版本和访问 Secret 版本。如需了解如何管理 Secret,请参阅管理 Secret。
准备工作
为每个项目配置一次 Secret Manager 和本地环境。
创建密文
密文包含一个或多个密文版本,以及标签和复制信息等元数据。密文的实际内容存储在密文版本中。
如果您不确定哪种密文政策适合您的密文,请参阅选择复制政策。
创建密文需要具有项目、文件夹或组织的 Secret Manager 管理员角色 (roles/secretmanager.admin
)。
控制台
-
转到控制台中的 Secret Manager 页面。
-
在 Secret Manager 页面上,点击创建密钥。
-
在创建 Secret 页面的 Name 下,输入 Secret 的名称(例如
my-secret
)。 -
(可选)要在创建初始 Secret 时添加 Secret 版本,请在 Secret 值字段中输入 Secret 的值(例如
abcd1234
)。 -
保持区域部分不变。
-
点击创建密钥按钮。
gcloud
如需通过命令行使用 Secret Manager,请先安装或升级到 Google Cloud CLI 338.0.0 或更高版本。在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
$ gcloud secrets create secret-id \
--replication-policy="automatic"
C#
要运行此代码,请先设置 C# 开发环境并安装 Secret Manager C# SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Go
要运行此代码,请先设置 Go 开发环境并安装 Secret Manager Go SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Java
要运行此代码,请先设置 Java 开发环境并安装 Secret Manager Java SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Node.js
要运行此代码,请先设置 Node.js 开发环境并安装 Secret Manager Node.js SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
PHP
如需运行此代码,请先了解如何在 Google Cloud 上使用 PHP 和安装 Secret Manager PHP SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Python
要运行此代码,请先设置 Python 开发环境并安装 Secret Manager Python SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Ruby
要运行此代码,请先设置 Ruby 开发环境并安装 Secret Manager Ruby SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
API
这些示例使用 curl 来使用 API 演示。 您可以使用 gcloud auth print-access-token 生成访问令牌。在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets?secretId=secret-id" \
--request "POST" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
--data "{\"replication\": {\"automatic\": {}}}"
添加密文版本
密文版本包含密文的实际内容。密文版本可以启用、停用或销毁。如需更改密文的内容,您需要创建一个新版本。
添加密文需要具有密文、项目、文件夹或组织的 Secret Manager 管理员角色 (roles/secretmanager.admin
)。不能对密文版本授予角色。
控制台
-
转到控制台中的 Secret Manager 页面。
-
在 Secret Manager 页面上,点击查看更多
,然后选择添加新版本。 -
在添加新版本对话框的密钥值字段中,输入密钥的值(例如
abcd1234
)。 -
点击添加新版本按钮。
gcloud
如需通过命令行使用 Secret Manager,请先安装或升级到 Google Cloud CLI 338.0.0 或更高版本。在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
从磁盘上文件的内容添加密文版本:
$ gcloud secrets versions add secret-id --data-file="/path/to/file.txt"
您也可以直接在命令行中添加密文版本,但我们不建议这样做,因为明文会显示在 shell 历史记录中:
$ echo -n "this is my super secret data" | \
gcloud secrets versions add secret-id --data-file=-
可选:首次创建密文时,从文件的内容添加版本:
$ gcloud secrets create secret-id --data-file="/path/to/file.txt"
C#
要运行此代码,请先设置 C# 开发环境并安装 Secret Manager C# SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Go
要运行此代码,请先设置 Go 开发环境并安装 Secret Manager Go SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Java
要运行此代码,请先设置 Java 开发环境并安装 Secret Manager Java SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Node.js
要运行此代码,请先设置 Node.js 开发环境并安装 Secret Manager Node.js SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
PHP
如需运行此代码,请先了解如何在 Google Cloud 上使用 PHP 和安装 Secret Manager PHP SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Python
要运行此代码,请先设置 Python 开发环境并安装 Secret Manager Python SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Ruby
要运行此代码,请先设置 Ruby 开发环境并安装 Secret Manager Ruby SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
API
这些示例使用 curl 来使用 API 演示。 您可以使用 gcloud auth print-access-token 生成访问令牌。在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
对密文数据进行 Base64 编码并将其另存为 shell 变量。
$ SECRET_DATA=$(echo "seCr3t" | base64)
使用 curl 调用 API。
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets/secret-id:addVersion" \
--request "POST" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
--data "{\"payload\": {\"data\": \"${SECRET_DATA}\"}}"
访问密文版本
访问密文版本会返回密文内容以及有关密文版本的其他元数据。访问密文版本时,您需要指定其 version-id。您还可以通过指定 "latest"
版本来访问密文的最新版本。
访问密文版本需要 Secret Manager Secret Accessor 角色 (roles/secretmanager.secretAccessor
),才能对密文、项目、文件夹或组织进行访问。不能对密文版本授予 IAM 角色。
资源一致性
在 Secret Manager 中,添加密文版本,然后立即访问该密文版本是一项具有高度一致性的操作。Secret Manager 中的其他操作具有最终一致性。最终一致性操作通常会在几分钟内完成收敛,但可能需要几个小时。
应用 IAM 权限会实现最终一致性。这意味着授予或撤销对密文的访问权限可能不会立即生效。如需了解详情,请参阅 IAM 文档。
控制台
-
转到控制台中的 Secret Manager 页面。
-
在 Secret Manager 页面上,点击密文的名称。
-
在密文详情页面的版本表中,找到要访问的密文版本。
-
在操作列中,点击查看更多
。 -
从菜单中点击查看密文值。
-
您将看到显示密文版本值的对话框。点击完成即可完成。
gcloud
如需通过命令行使用 Secret Manager,请先安装或升级到 Google Cloud CLI 338.0.0 或更高版本。在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
访问密文版本:
$ gcloud secrets versions access version-id --secret="secret-id"
访问二进制密文版本:
$ gcloud secrets versions access version-id --secret="secret-id" --format='get(payload.data)' | tr '_-' '/+' | base64 -d
C#
要运行此代码,请先设置 C# 开发环境并安装 Secret Manager C# SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Go
要运行此代码,请先设置 Go 开发环境并安装 Secret Manager Go SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Java
要运行此代码,请先设置 Java 开发环境并安装 Secret Manager Java SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Node.js
要运行此代码,请先设置 Node.js 开发环境并安装 Secret Manager Node.js SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
PHP
如需运行此代码,请先了解如何在 Google Cloud 上使用 PHP 和安装 Secret Manager PHP SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Python
要运行此代码,请先设置 Python 开发环境并安装 Secret Manager Python SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Ruby
要运行此代码,请先设置 Ruby 开发环境并安装 Secret Manager Ruby SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
API
这些示例使用 curl 来使用 API 演示。 您可以使用 gcloud auth print-access-token 生成访问令牌。在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets/secret-id/versions/version-id:access" \
--request "GET" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json"
响应 payload.data
是密文版本的 base64 编码内容。以下是使用 jq
工具提取密文的示例:
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets/secret-id/versions/version-id:access" \
--request "GET" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
| jq -r ".payload.data" | base64 --decode
后续步骤
- 详细了解如何管理密文和密文版本。
- 详细了解如何管理对密文的访问权限。