使用 Cloud Code 创建和管理 Secret

了解如何使用 Cloud Code 的 Secret Manager 集成创建和管理 Secret。


如需在 Cloud Shell Editor 中直接遵循有关此任务的分步指导,请点击操作演示

操作演示


准备工作

  1. 在 Google Cloud Console 中,转到项目选择器页面。

    转到“项目选择器”

  2. 选择或创建 Google Cloud 项目。

  3. 安装 Git,以便 Cloud Code 可以执行 Git 操作,例如克隆示例。
  4. 安装 Cloud Code 插件(如果尚未安装)。

创建 Cloud Run 服务

使用 Cloud Shell Editor 作为创建 Cloud Run 服务和密钥的环境。编辑器会预加载云开发所需的工具。

如需创建服务,请执行以下操作:

  1. 在 Cloud Code 状态栏中,点击活动项目名称。

    状态栏中的活动项目名称

  2. 在显示的“Quick Pick”菜单中,选择 New Application(新建应用),然后点击 Cloud Run Application(Cloud Run 应用)。

  3. 从 Cloud Run 示例列表中,选择 Python (Flask): Cloud Run

  4. 为示例选择一个文件夹,然后点击 Create New Application(创建新应用)。

Cloud Shell Editor 在新工作区中加载服务后,请在资源管理器视图中查看该服务的文件。

创建 Secret

借助 Secret Manager,您能以二进制 blob 或文本字符串的形式安全地存储、管理和访问 Secret。此外,它还可以管理您的密文,这意味着您无需处理虚拟机或操作服务。

如需使用 Cloud Code 的 Secret Manager 集成创建 Secret,请执行以下操作:

  1. 点击 Secret Manager 并等待一段时间进行加载。
  2. 如果系统提示您授权 Cloud Shell 进行 Google Cloud API 调用,请点击授权
  3. 点击 add 创建 Secret
  4. 如果系统提示,请从下拉选择器中选择您的 Google Cloud 项目。
  5. 如果系统提示,请启用 Secret Manager API。
  6. 在显示的 Secret Manager - 创建密钥标签页中,在名称字段中输入以下内容:

    my-secret
    
  7. 密钥值字段中,输入:

    Hello secret!
    
  8. 点击创建密钥,系统会显示一条消息,指示您的密钥已成功创建。

在代码中添加密钥

Secret 非常适合存储应用在运行时所需的数据库密码、API 密钥或 TLS 证书等配置信息。

如需向您的代码添加密钥,请执行以下操作:

  1. 打开 Cloud API 视图,然后选择 Secret Manager API

    系统会打开一个标题为 Secret Manager API 的 Google Cloud API 详细信息标签页。

  2. 安装客户端库部分中,点击 Python 标签页,然后点击 play_arrow 在终端中运行。这会安装 google-cloud-secret-manager 客户端库。

  3. 打开 requirements.txt 并将以下代码行添加到文件底部:

    google-cloud-secret-manager==2.1.0
    

    系统会自动保存您所做的更改。

  4. 如需获取 Secret 的最新值,请打开 app.py,然后复制以下函数并将其粘贴到 hello 函数之后

    def access_secret_version(secret_version_id):
        """Return the value of a secret's version"""
        from google.cloud import secretmanager
    
        # Create the Secret Manager client.
        client = secretmanager.SecretManagerServiceClient()
    
        # Access the secret version.
        response = client.access_secret_version(name=secret_version_id)
    
        # Return the decoded payload.
        return response.payload.data.decode('UTF-8')
    
    
  5. 如需调用 access_secret_version 函数,请将消息变量替换为以下内容:

    message = access_secret_version("<SECRET_VERSION_ID>")
    
  6. 如果您仍保持打开 Secret Manager - Create Secret 标签页,请使用 file_copy 复制 ID。

    如需随时获取 Secret 版本的 ID,请依次前往 Secret Manager > [SECRET_NAME] > Versions,将指针悬停在您的版本上,然后点击 复制资源 ID

  7. 如需添加版本 ID,请将占位符 <SECRET_VERSION_ID> 替换为复制的版本 ID。

在 Cloud Run 模拟器上运行

如需测试新 Secret,请在 Cloud Run 模拟器本地运行 Cloud Run 服务。

  1. 从状态栏启动 Cloud Code 菜单。
  2. 如需构建服务并将其部署到模拟器,请选择 Run on Cloud Run Emulator
  3. 在随即显示的“Run/Debug on Cloud Run Emulator”标签页中,点击 Run
  4. 首次运行配置时,此过程最多可能需要 5 分钟。Output(输出)面板会显示应用的构建和部署进度。

  5. 应用构建完毕后,请点击 Output(输出)面板中显示的 localhost 链接以启动应用。密钥的值会显示在成功图形下方。

查看和创建新的 Secret 版本

通过 Cloud Code 的 Secret Manager 视图,您可以快速查看项目的 Secret,以及管理它们的操作。

查看 Secret 版本的值

  1. 点击 Secret Manager 视图。
  2. 点击密钥以展开该密钥。
  3. 版本文件夹中,右键点击要查看其值的编号版本,然后选择显示版本值

请注意,您无法修改 Secret 版本。如需更新 Secret 的值,您必须创建一个新版本

创建新的 Secret 版本

Secret 的值存储在 Secret 版本中。一个密钥可以有多个版本。这在 Secret 发生更改的情况非常有用。使用新版本更新 Secret 时,您不必更新代码。

  1. 点击 Secret Manager 视图。
  2. 右键点击密钥的名称,然后选择创建密钥版本
  3. 在随即显示的 Secret Manager - 创建版本标签页中,输入新值,然后点击创建版本
  4. 打开 Secret Manager - 创建密钥标签页后,点击 file_copy 复制顶部的 ID。
  5. 如需添加较新版本 ID,请将 app.py 中显示消息变量的当前版本替换为您复制的较新版本 ID。

如果您希望代码始终使用最新版本,请将版本 ID 末尾的版本号替换为 latest

查看和管理密钥

停用 Secret 版本

Secret 版本创建后默认处于启用状态,这意味着可以访问这些版本。已停用的密钥无法访问,但您可以随时恢复对它的访问权限。

如需停用 Secret 版本,请执行以下操作:

  1. 点击 Cloud Code,然后展开 Secret Manager 部分。
  2. 点击密钥以展开该密钥。
  3. 版本文件夹下,右键点击要停用的编号版本。
  4. 选择停用版本

销毁密文版本

密文版本一旦销毁,便无法访问。销毁 Secret 版本是永久性操作。

  1. 点击 Cloud Code,然后展开 Secret Manager 部分。
  2. 点击密钥以展开该密钥。
  3. 版本文件夹下,右键点击要销毁的版本。
  4. 选择销毁版本

清理

要仅删除您为本快速入门创建的集群,请执行以下操作:

  1. 点击 Cloud Code,然后展开 Kubernetes 部分。
  2. 将指针悬停在集群名称上,然后点击 open_in_new 在 Google Cloud 控制台中打开
  3. 点击删除,然后再次点击删除进行确认。

如需删除项目(以及关联的资源,包括所有集群),请执行以下操作:

  1. 进入 Google Cloud 控制台中的“项目”页面:

    转到“项目”页面

  2. 选择您为本快速入门创建的项目,然后点击删除

  3. 输入项目 ID 进行确认,然后点击关停

    这将关闭该项目并安排将其删除。