Secret 数据不可修改,大多数操作都在 Secret 版本上进行。密文版本包含实际的密文数据,以及有关密文的状态和元数据。本页介绍了如何添加密文版本。
如需详细了解版本控制,请观看有关版本控制的视频。
所需的角色
如需获得添加 Secret 版本所需的权限,请让管理员向您授予 Secret 的以下 IAM 角色:
-
Secret Manager Secret Version Adder (
roles/secretmanager.secretVersionAdder
) -
Secret Manager Secret Version Manager (
roles/secretmanager.secretVersionManager
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
不能对密文版本授予 IAM 角色。
添加 Secret 版本
如需添加 Secret 版本,请使用以下方法之一:
控制台
-
转到 Google Cloud 控制台中的 Secret Manager 页面。
-
在 Secret Manager 页面上,点击区域性 Secret 标签页,然后找到要为其添加新版本的 Secret。
-
点击与该密钥关联的
操作菜单,然后点击添加新版本。系统随即会显示添加新版本对话框。 -
在 Secret 值字段中,输入 Secret 的值,例如
abcd1234
。 或者,您也可以上传包含 Secret 值的文件。 -
点击添加新版本。
gcloud
从磁盘上文件的内容添加密文版本
在使用下面的命令数据之前,请先进行以下替换:
- SECRET_ID:Secret 的 ID 或 Secret 的完全限定标识符
- LOCATION:密钥的 Google Cloud 位置
- FILE_PATH:包含版本详细信息的文件的完整路径(包括文件名)
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud secrets versions add SECRET_ID --location=LOCATION --data-file="FILE_PATH"
Windows (PowerShell)
gcloud secrets versions add SECRET_ID --location=LOCATION --data-file="FILE_PATH"
Windows (cmd.exe)
gcloud secrets versions add SECRET_ID --location=LOCATION --data-file="FILE_PATH"
响应中包含新创建的 Secret 版本。
直接在命令行中添加 Secret 版本
您也可以直接在命令行中添加密文版本,但我们不建议这样做,因为它会以明文形式显示在进程列表中,并且可能会被其他系统用户捕获。请注意,包含明文的命令也会显示在您的 shell 历史记录中。
在使用下面的命令数据之前,请先进行以下替换:
- SECRET_DATA:您要存储在 Secret 版本中的数据
- SECRET_ID:Secret 的 ID 或 Secret 的完全限定标识符
- LOCATION:密钥的 Google Cloud 位置
执行以下命令:
Linux、macOS 或 Cloud Shell
echo -n "SECRET_DATA" | \ gcloud secrets versions add SECRET_ID --location=LOCATION --data-file=-
Windows (PowerShell)
echo -n "SECRET_DATA" | ` gcloud secrets versions add SECRET_ID --location=LOCATION --data-file=-
Windows (cmd.exe)
echo -n "SECRET_DATA" | ^ gcloud secrets versions add SECRET_ID --location=LOCATION --data-file=-
响应中包含新创建的 Secret 版本。
可选:首次创建密文时,从文件的内容添加版本
在使用下面的命令数据之前,请先进行以下替换:
- SECRET_ID:Secret 的 ID 或 Secret 的完全限定标识符
- LOCATION:密钥的 Google Cloud 位置
- FILE_PATH:包含版本详细信息的文件的完整路径(包括文件名)
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud secrets create SECRET_ID --location=LOCATION --data-file="FILE_PATH"
Windows (PowerShell)
gcloud secrets create SECRET_ID --location=LOCATION --data-file="FILE_PATH"
Windows (cmd.exe)
gcloud secrets create SECRET_ID --location=LOCATION --data-file="FILE_PATH"
响应中包含新创建的 Secret 版本。
REST
对密文数据进行 Base64 编码并将其另存为 shell 变量。
$ SECRET_DATA=$(echo "seCr3t" | base64)
在使用任何请求数据之前,请先进行以下替换:
- LOCATION:密钥的 Google Cloud 位置
- PROJECT_ID:Google Cloud 项目 ID
- SECRET_ID:Secret 的 ID 或 Secret 的完全限定标识符
HTTP 方法和网址:
POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:addVersion
请求 JSON 正文:
{"payload": {"data": "${SECRET_DATA}"}}
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:addVersion"
PowerShell
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:addVersion" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID/versions/1", "createTime": "2024-03-25T08:24:13.153705Z", "state": "ENABLED", "etag": "\"161477e6071da9\"" }
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 范围进行身份验证。
Python
如需运行此代码,请先设置 Python 开发环境并安装 Secret Manager Python SDK。在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
密文版本状态
在任何给定时间,密文版本可能处于以下某种状态:
-
已启用 - 处于此状态时,可以访问和描述密文版本。 这是新密文版本的默认状态。
-
已停用 - 处于此状态时,密文版本无法访问,但密文的内容仍然存在。您可以重新启用密文版本以恢复访问权限。
-
已销毁 - 在此状态下,密文版本的内容将被舍弃。密文版本不能更改为其他状态。
您需要为已启用和已停用的密文版本付费。您无需为处于已销毁状态的密文版本付费。