使用 SSH 公钥进行身份验证

用户和服务账号可以使用 SSH 公钥向 Secure Source Manager 代码库进行身份验证。本页介绍了如何生成 SSH 密钥对,然后将其添加为 Secure Source Manager 网页界面中的身份验证方法。

Secure Source Manager 支持 RSA、ECDSA 和 Ed25519 SSH 密钥类型。

所需的角色

如需获得使用 SSH 公钥进行身份验证所需的权限,请让管理员为您授予以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

这些预定义角色包含使用 SSH 公钥进行身份验证所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需使用 SSH 公钥进行身份验证,您需要具备以下权限:

  • securesourcemanager.sshkeys.createAny 在 Secure Source Manager 实例上
  • 如需为服务账号分配 SSH 密钥,请执行以下操作: iam.serviceAccounts.actAs 在服务账号上

您也可以使用自定义角色或其他预定义角色来获取这些权限。

如需了解如何授予 Secure Source Manager 角色,请参阅使用 IAM 进行访问权限控制向用户授予实例访问权限

生成密钥对

SSH 密钥对由位于本地系统上的私钥和您在 Google Cloud中注册的公钥组成。

Linux 或 macOS

  1. 在本地系统上安装 OpenSSH

  2. 在命令提示符后输入以下内容:

    ssh-keygen -t [KEY_TYPE] -C "[USER_EMAIL]"
    

    其中:

    • [USER_EMAIL] 是您的电子邮件地址。
    • [KEY_TYPE]rsaecdsaed25519 中的一个。

    例如:

    ssh-keygen -t rsa -C "user@example.com"
    
    1. 出现提示时,输入公钥文件的位置和文件名。 如需接受默认位置和文件名,请按 Enter 键。

    2. 出现提示时,请将密码留空,然后按 Enter 键。

Windows

  1. 在本地系统上安装 PuTTY

  2. 从 Windows 开始 菜单中,启动 PuTTYGen。

  3. 在打开的窗口中,从 Parameters 字段中选择密钥类型。

  4. 点击生成

    PuTTYGen 随即会显示生成的公钥字符串。

  5. 出现提示时,请将密码留空,然后按 Enter 键。

  6. 要将生成的密钥对保存到本地系统,请点击 保存公共密钥保存私有密钥

为用户添加 SSH 密钥

  1. 在 Secure Source Manager 网页界面中,从实例或代码库页面点击 更多选项菜单。
  2. 点击用户 SSH 密钥

    系统会打开用户 SSH 密钥页面,并显示您创建的所有现有密钥的列表。

  3. 用户 SSH 密钥页面中,点击添加密钥

  4. 添加 SSH 密钥 页面中,为您的密钥输入以下值:

    1. 标题:为密钥添加描述性标题。
    2. SSH 公钥:粘贴您的公钥字符串。如需获取您的公钥字符串,请运行以下命令:
    cat ~/.ssh/FILENAME.pub
    

    其中,FILENAME 是您为密钥文件指定的名称。

您可以使用 SSH 密钥对任何 Secure Source Manager 代码库进行身份验证,前提是您对该代码库拥有所需的权限。

为服务账号添加 SSH 密钥

如需以程序化方式访问您的代码库,您可以为服务账号添加 SSH 密钥。

  1. 如果您还没有要使用的服务账号,请创建一个服务账号
  2. 在 Secure Source Manager 网页界面中,点击 更多选项菜单。
  3. 点击服务账号 SSH 密钥。系统会打开服务账号 SSH 密钥页面,并显示您添加的所有现有密钥的列表。
  4. 服务账号 SSH 密钥页面中,点击添加密钥
  5. 添加服务账号 SSH 密钥页面中,为您的密钥输入以下值:

    1. Title:密钥的描述性标题
    2. 服务账号:您要使用 SSH 密钥的服务账号的电子邮件地址,格式为 SA_NAME@PROJECT_ID.iam.gserviceaccount.com

      地点

      • SA_NAME 是服务账号名称。
      • PROJECT_ID 是服务账号所在项目的项目 ID。
    3. SSH 公钥:您的 SSH 公钥。如需了解如何生成 SSH 密钥对,请参阅生成密钥对

  6. 如果服务账号与 Secure Source Manager 实例不在同一项目中,请向 Secure Source Manager 的服务代理授予您要使用的服务账号的以下角色或权限之一:

    • iam.serviceAccounts.signJwt 权限
    • Service Account Token Creator (roles/iam.serviceAccountTokenCreator) 角色

    运行以下命令,向您的 Secure Source Manager 服务账号添加 IAM 政策,以向其授予 Service Account Token Creator 角色。

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT \
        --member="serviceAccount:service-INSTANCE_PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountTokenCreator"
    

    其中,SERVICE_ACCOUNT 是您要使用的服务账号,INSTANCE_PROJECT_NUMBER 是您的 Secure Source Manager 实例的项目编号。

    SERVICE_ACCOUNT 的格式应为数字服务账号 ID 或电子邮件地址,例如:123456789876543212345 或 my-iam-account@somedomain.com。

后续步骤