查看密文版本详情

本页介绍了如何检索一段时间以来创建的密文的所有不同版本的列表,以及如何查看特定密文版本的元数据。

所需的角色

如需获得列出 Secret 版本和查看版本详细信息所需的权限,请让您的管理员为您授予密文、项目、文件夹或组织的 Secret Manager Viewer (roles/secretmanager.viewer) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

列出密文的版本

列出 Secret 的版本非常有用,原因如下:

  • 您可以查看密钥随时间变化的情况、更改者以及更改时间。这是审核和合规性所必需的。

  • 如果密文意外更新或遭到入侵,您可以回滚到之前已知良好的版本。

  • 您可以识别不再使用且可以安全删除的版本。

  • 您可以排查问题。例如,如果应用遇到问题,您可以检查密文的先前版本,看看是否是密文的更改导致了问题。

如需列出某个 Secret 的所有版本,请使用以下方法之一:

控制台

  1. 在 Google Cloud 控制台中,前往 Secret Manager 页面。

    前往 Secret Manager

  2. 点击某个 Secret 以访问其版本。

    属于相应密文的版本会显示在版本表中。

gcloud

在使用下面的命令数据之前,请先进行以下替换:

  • SECRET_ID:相应 Secret 的 ID

执行以下命令:

Linux、macOS 或 Cloud Shell

gcloud secrets versions list SECRET_ID

Windows (PowerShell)

gcloud secrets versions list SECRET_ID

Windows (cmd.exe)

gcloud secrets versions list SECRET_ID

响应包含密钥。

REST

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID: Google Cloud 项目 ID
  • SECRET_ID:相应 Secret 的 ID

HTTP 方法和网址:

GET https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions

请求 JSON 正文:

{}

如需发送请求,请选择以下方式之一:

curl

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions"

PowerShell

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions" | Select-Object -Expand Content

您应该收到类似以下内容的 JSON 响应:

{
  "versions": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID/versions/VERSION_ID",
      "createTime": "2024-09-04T06:41:57.859674Z",
      "state": "ENABLED",
      "etag": "\"1621457b3c1459\""
    }
  ],
  "totalSize": 1
}

C#

要运行此代码,请先设置 C# 开发环境安装 Secret Manager C# SDK。在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证


using Google.Cloud.SecretManager.V1;

public class ListSecretVersionsSample
{
    public void ListSecretVersions(string projectId = "my-project", string secretId = "my-secret")
    {
        // Create the client.
        SecretManagerServiceClient client = SecretManagerServiceClient.Create();

        // Build the resource name.
        SecretName secretName = new