使用 Cloud Code 创建和管理 Secret

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


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

操作演示


准备工作

  1. In the Google Cloud console, go to the project selector page.

    Go to project selector

  2. Select or create a Google Cloud project.

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

创建 Cloud Run 服务

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

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

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

    状态栏中的活跃项目名称

  2. 在显示的“快速选择”菜单中,选择新建应用,然后 然后点击 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. 点击 秘密 管理器,并稍等片刻。
  2. 如果系统提示您授权 Cloud Shell 进行 Google Cloud API 调用,请执行以下操作: 点击授权
  3. 点击添加 创建 Secret
  4. 如果系统提示,请从下拉选择器中选择您的 Google Cloud 项目。
  5. 如果出现提示,请启用 Secret Manager API。
  6. 在显示的 Secret Manager - Create Secret 标签页中,输入 在名称字段中填写以下内容:

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

    Hello secret!
    
  8. 点击 Create Secret,然后系统会显示一条消息,告知您 Secret 已成功创建 出现。

向您的代码添加密钥

Secret 非常适合存储数据库等配置信息 密码、API 密钥或 TLS 证书。

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

  1. 打开 云 API 视图,然后选择 <ph type="x-smartling-placeholder"></ph> Secret Manager API

    系统随即会打开一个“Google Cloud API 详细信息”标签页,其中 Secret Manager API 是 标题。

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

  3. 未解决 requirements.txt 并将以下代码行添加到文件底部:

    google-cloud-secret-manager==2.1.0
    

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

  4. 如需获取密钥的最新值,请打开 app.py 然后复制并粘贴以下函数: <ph type="x-smartling-placeholder"></ph> 在 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。

    如需随时获取密钥版本的 ID,请前往 秘密 经理 >[SECRET_NAME] >请按住 将鼠标悬停在您的版本上,然后点击 复制资源 ID

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

在 Cloud Run 模拟器上运行

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

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

  5. 构建好应用后,点击 出现在您的 输出 面板。您的 Secret 的值会显示在成功图形下方。

查看和创建新的 Secret 版本

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

查看 Secret 版本的值

  1. 点击 秘密 经理视图。
  2. 点击 Secret 即可展开它。
  3. 版本文件夹中,右键点击您所需的编号版本 以查看 的值并选择显示版本值

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

创建新的 Secret 版本

Secret 的值存储在 Secret 版本中。一个密钥可以有多个 版本。当 Secret 发生更改时,这非常有用。更新 Secret 与新版本相关联,意味着您无需更新代码。

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

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

查看和管理密钥

停用 Secret 版本

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

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

  1. 点击 Cloud Code,然后展开 Secret Manager 部分。
  2. 点击 Secret 即可展开它。
  3. 版本文件夹下,右键点击您要 停用。
  4. 选择停用版本

销毁密文版本

密文版本一旦销毁,便无法访问。销毁 Secret 版本一经确定便无法更改。

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

清理

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

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

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

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

    转到“项目”页面

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

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

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