在 Dataform 中对私有软件包进行身份验证

本文档介绍了如何在 Dataform 中对私有 NPM 软件包进行身份验证,以使其能够在 Dataform 代码库中安装。

如需在 Dataform 代码库中安装专用 NPM 软件包并使用它来开发 SQL 工作流,您需要先在 Dataform 中对软件包进行身份验证。对于代码库中的第一个私有软件包代码库中后续的私有软件包,身份验证过程有所不同。

准备工作

  1. 在 Google Cloud 控制台中,转到 Dataform 页面。

    转到 Dataform 页面

  2. 选择或创建代码库

  3. 选择或创建开发工作区

所需的角色

如需获取在 Dataform 中对专用 NPM 软件包进行身份验证所需的权限,请让管理员向您授予代码库和工作区的 Dataform Editor (roles/dataform.editor) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

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

对 Dataform 代码库中的第一个私有软件包进行身份验证

如需在 Dataform 中对专用 NPM 软件包进行身份验证,您需要先执行以下操作,才能在 Dataform 代码库中安装第一个专用 NPM 软件包:

  1. 创建 Secret Manager 密钥,专用于在 Dataform 代码库中存储专用 NPM 软件包的身份验证令牌。

    1. 将从您的 NPM 注册表获取的软件包的身份验证令牌添加到 Secret。

    您需要将专用 NPM 软件包的所有身份验证令牌存储在单个密钥中。您需要为每个 Dataform 代码库创建一个专用 Secret。密钥必须采用 JSON 格式。

  2. 将密钥上传到 Dataform 代码库。

  3. 创建 .npmrc 文件将软件包的身份验证令牌添加到该文件中

    .npmrc 文件中的身份验证令牌必须与上传的 Secret 中的身份验证令牌匹配。

对专用 NPM 软件包进行身份验证后,您可以将该软件包安装到 Dataform 代码库中

创建用于对专用软件包进行身份验证的密钥

如需对 Dataform 代码库中的专用 NPM 软件包进行身份验证,您需要创建 Secret Manager 密钥,并为要在该 Secret 内的 Dataform 代码库中安装的所有专用软件包定义身份验证令牌。为每个专用 NPM 软件包定义一个身份验证令牌,并将所有身份验证令牌存储在每个存储库的单个密钥中。密钥必须采用 JSON 格式。

如需使用专用 NPM 软件包的身份验证令牌创建 Secret,请按以下步骤操作:

  1. 在 Secret Manager 中,创建 Secret

    1. Secret 值字段中,按以下格式输入一个或多个身份验证令牌:
    {
      "AUTHENTICATION_TOKEN_NAME": "TOKEN_VALUE"
    }
    

    替换以下内容:

    • AUTHENTICATION_TOKEN_NAME:令牌的唯一名称,用于标识其身份验证的软件包
    • TOKEN_VALUE:从您的 NPM 注册表获取的身份验证令牌的值
  2. 向您的 Dataform 服务帐号授予对 Secret 的访问权限

    您的 Dataform 服务帐号采用以下格式:

    service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    
    1. 授予访问权限时,请务必向您的 Dataform 服务帐号授予 roles/secretmanager.secretAccessor 角色。

将用于对专用软件包进行身份验证的密钥上传到 Dataform 代码库

首次在 Dataform 代码库中安装专用 NPM 软件包之前,请将包含软件包身份验证令牌的 Secret 上传到代码库。

如需将包含私有 NPM 软件包身份验证令牌的 Secret 上传到 Dataform 代码库,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,转到 Dataform 页面。

    转到 Dataform

  2. 选择您要在其中安装专用 NPM 软件包的代码库。

  3. 在代码库页面上,依次点击设置 > 配置专用 NPM 软件包

  4. 添加 NPM 软件包 Secret 令牌窗格的 Secret 下拉列表中,选择包含专用 NPM 软件包身份验证令牌的 Secret。

  5. 点击保存

创建用于对专用软件包进行身份验证的 .npmrc 文件

如需对 Dataform 代码库中的私有 NPM 软件包进行身份验证,您需要在代码库中创建顶级 .npmrc 文件。您需要将要安装在代码库中的所有专用 NPM 软件包的身份验证令牌存储在 .npmrc 文件内。.npmrc 文件中的身份验证令牌必须与上传到代码库的 Secret 中的身份验证令牌匹配。如需详细了解 .npmrc 文件,请参阅 npmrc 文档

如需在代码库中创建顶级 .npmrc 文件,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,转到 Dataform 页面。

    转到 Dataform

  2. 选择要在其中安装专用 NPM 软件包的代码库,然后选择一个工作区。

  3. Files 窗格中,点击 More 菜单,然后点击 Create file

  4. 创建新文件窗格中,执行以下操作:

    1. 添加文件路径字段中,输入 .npmrc

    2. 点击创建文件

将身份验证令牌添加到 Dataform 代码库的 .npmrc 文件

如果 Dataform 代码库中已有包含软件包身份验证令牌和 .npmrc 文件的 Secret 的专用 NPM 软件包,如需对专用 NPM 软件包进行身份验证,您需要将专用软件包的身份验证令牌添加到代码库的 .npmrc 文件中。

.npmrc 文件中,您需要定义 NPM 注册表的范围,并为在该范围内访问的私有软件包添加身份验证令牌。如需详细了解 .npmrc 文件,请参阅 npmrc 文档

.npmrc 文件中的身份验证令牌必须与上传到代码库的 Secret 中的身份验证令牌匹配。

如需将身份验证令牌添加到 Dataform 代码库的 .npmrc 文件,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,转到 Dataform 页面。

    转到 Dataform

  2. 选择要在其中安装专用 NPM 软件包的代码库,然后选择一个工作区。

  3. Files 窗格中,选择 .npmrc 文件。

  4. .npmrc 文件中,按以下格式定义专用软件包的 NPM 注册表范围和身份验证令牌:

   @REGISTRY-SCOPE:registry=NPM-REGISTRY-URL
   NPM-REGISTRY-URL:_authToken=$AUTHENTICATION-TOKEN

替换以下内容:

  • REGISTRY-SCOPE:您要应用身份验证令牌的 NPM 注册表范围
  • NPM-REGISTRY-URL:您的 NPM 注册表的网址,例如 https://npm.pkg.github.com
  • AUTHENTICATION-TOKEN:专用 NPM 软件包的身份验证令牌。.npmrc 文件中的身份验证令牌必须与上传的密钥中的身份验证令牌匹配。身份验证令牌在 .npmrc 文件中以环境变量的形式提供,因此请务必添加左括号 ${} 右括号。

    您可以输入多个身份验证令牌。

以下代码示例展示了添加到 Dataform 代码库的 .npmrc 文件中的专用 NPM 软件包的身份验证令牌:

@company:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${AUTHENTICATION_TOKEN}

对 Dataform 代码库中的后续私有软件包进行身份验证

若要对已包含具有软件包身份验证令牌和 .npmrc 文件的 Secret 的 Dataform 代码库中的私有 NPM 软件包进行身份验证,请按以下步骤操作:

  1. 在 Secret Manager 中,列出 Secret,并选择用于存储代码库专用 NPM 软件包的身份验证令牌的 Secret。

  2. 向 Secret 添加新版本

    默认情况下,Dataform 使用最新版本的 Secret。

    1. 按以下格式将专用软件包的身份验证令牌添加到 Secret 值:
    {
      "AUTHENTICATION_TOKEN_NAME": "TOKEN_VALUE"
    }
    

    替换以下内容:

    • AUTHENTICATION_TOKEN_NAME:令牌的唯一名称,用于标识其身份验证的软件包
    • TOKEN_VALUE:从您的 NPM 注册表获取的身份验证令牌的值

    您可以一次添加多个身份验证令牌。

  3. 在 Dataform 中,将身份验证令牌添加到代码库的 .npmrc 文件中

对专用 NPM 软件包进行身份验证后,您可以将该软件包安装到 Dataform 代码库中

后续步骤