NPM与外部服务的集成(下)

目录

1、撤消访问令牌

2、在CI/CD工作流中使用私有包

2.1 创建新的访问令牌

持续整合

持续部署

交互式工作流

CIDR白名单

2.2 将令牌设置为CI/CD服务器上的环境变量

2.3 创建并签入特定于项目的.npmrc文件

2.4 令牌安全

3、Docker和私有模块

3.1 背景:运行时变量

3.2 更新Dockerfile

3.3 构建Docker镜像


1、撤消访问令牌

为了确保您的帐户和软件包的安全,我们强烈建议您撤销(删除)不再需要或已被泄露的令牌。您可以撤销已创建的任何令牌。

1、如果要查看令牌列表,请在命令行上运行:
npm token list

2、在令牌表中,查找并复制要删除的令牌的ID。

3、在命令行上,运行以下命令,例如删除的令牌的ID为0a4d81

npm token delete 0a4d81

4、要确认令牌已删除,请再次运行如下命令,查看下令牌是否已删除: 

根据创建时间倒序排列的令牌列表,可以发现刚才的只读令牌已删除。

注意:必须使用令牌ID来删除令牌,而不是令牌的截断版本。在某些情况下,在令牌被成功撤销之前可能存在长达一小时的延迟。 

2、在CI/CD工作流中使用私有包

您可以使用访问令牌在持续集成(CI)系统中测试私有npm包,或者使用持续部署(CD)系统部署它们。

2.1 创建新的访问令牌

创建一个新的访问令牌,仅用于从CI/CD服务器访问npm包。

持续整合

当生成用于持续集成环境的访问令牌时,我们建议使用具有有限访问权限的粒度访问令牌,以提供更高的安全性。

如果您使用传统令牌,默认情况下,npm token create将生成具有读写权限的令牌。我们建议创建只读令牌:

npm token create --read-only

有关创建访问令牌(包括CIDR白名单令牌)的详细信息,可以参考之前的文章,NPM与外部服务的集成(上)

持续部署

由于持续部署环境通常涉及到创建部署工件,因此您可能希望在网站上创建一个自动化令牌
。这将允许您发布,即使您在帐户上启用了双因素身份验证。

交互式工作流

如果您的工作流生成了一个包,但您在验证后手动发布了它,那么您将需要创建一个具有读写权限的令牌,这些权限是通过标准令牌创建命令授予的:

npm token create

CIDR白名单

为了提高安全性,您可以使用CIDR白名单令牌,该令牌只能在特定的IP地址范围内使用。您可以使用CIDR白名单和读取和发布令牌或只读令牌:

npm token create --cidr=[list]
npm token create --read-only --cidr=[list]

Example:范例:

npm token create --cidr=192.0.2.0/24

2.2 将令牌设置为CI/CD服务器上的环境变量

在CI/CD服务器中将令牌设置为环境变量或密码。

例如,在GitHub Actions中,您可以将令牌添加为密钥
。然后,您可以将密钥设置为可用于工作流。

如果您将secret命名为NPM_TOKEN,那么您需要从该secret创建一个名为NPM_TOKEN的环境变量。

steps:- run: |npm install- env:NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

2.3 创建并签入特定于项目的.npmrc文件

使用特定于项目的.npmrc文件和令牌的变量,以使用npm安全地验证CI/CD服务器。

1、在项目的根目录中,创建包含以下内容的自定义.npmrc文件:

//registry.npmjs.org/:_authToken=${NPM_TOKEN}

注意:您指定的是一个文本值${NPM_TOKEN}。npm cli会将这个值替换为NPM_TOKEN环境变量的内容。不要在此文件中放置令牌。

2.4 令牌安全

您的令牌可能有权读取私有包、代表您发布新包或更改用户或包设置。保护好你的令牌。

不要将令牌添加到版本控制中或以不安全的方式存储令牌。将其存储在密码管理器、云提供商的安全存储或CI/CD提供商的安全存储中。

如果可能,请使用具有最低必要权限的粒度访问令牌,并为令牌设置较短的到期日期。

3、Docker和私有模块

要在Docker容器中安装私有npm包,您需要使用Docker构建密钥。

3.1 背景:运行时变量

您不能仅使用运行时变量在Docker容器中安装私有npm包。考虑以下Dockerfile:

FROM nodeCOPY package.json package.json
RUN npm install# Add your source files
COPY . .
CMD npm start

它将使用官方的Node.js镜像,将package.json复制到我们的容器中,安装依赖项,复制源文件并运行package.json中指定的start命令。

为了安装私有包,你可能会认为我们可以在运行npm install之前添加一行,使用ENV参数:

ENV NPM_TOKEN=00000000-0000-0000-0000-000000000000

然而,这并不像你期望的那样工作,因为你希望npm安装在你运行docker build时发生,在这个例子中,没有使用ENV变量,它们只为运行时设置。

你必须使用Docker构建秘密,而不是运行时变量。

3.2 更新Dockerfile

利用这一点的Dockerfile比前面的示例多了几行,允许我们使用您的全局.npmrc和在运行npm login命令时创建的访问令牌(如果您还没有运行它-请在继续之前运行它)。

# https://docs.npmjs.com/docker-and-private-modules
FROM node:18ENV APP_HOME="/app"WORKDIR ${APP_HOME}COPY package*.json ${APP_HOME}/RUN --mount=type=secret,id=npmrc,target=/root/.npmrc npm installCOPY . ${APP_HOME}/CMD npm start

这将配置您的Dockerfile通过build secrets接收.npmrc文件,在npm依赖安装完成后不会留下任何痕迹。

3.3 构建Docker镜像

要使用上述Dockerfile和npm身份验证令牌构建镜像,可以运行以下命令。请注意,最后给予.将当前目录作为参数提供给docker build

docker build . -t secure-app-secrets:1.0 --secret id=npmrc,src=$HOME/.npmrc

这将使用通过build secrets接收的全局.npmrc文件中的访问令牌构建Docker镜像,因此您可以作为当前登录用户在容器中运行npm install

注意:您可能需要指定一个不同于默认/的工作目录,否则某些框架(如Angular)将失败。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/69392.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyQt5编写可视化程序GB/T 34986-2017 产品加速试验方法(B 5.5 湿度试验)

GB/T 34986-2017 产品加速试验方法(B 5.5 湿度试验) 阿伦纽斯模型-温度(Arrhenius Mode) 温度公式 AF exp{(Ea/K)[(1/Tu)-(1-Tt)]} 举例 AF exp{[0.68/(8.61738510e-5)][[1/(27325)]-[1/(273105)]]} ≈271.9518 AF 为加速因子 RHs 施加应力…

机器学习笔记 - 基于PyTorch + 类似ResNet的单目标检测

一、获取并了解数据 我们将处理年龄相关性黄斑变性 (AMD) 患者的眼部图像。 数据集下载地址,从下面的地址中,找到iChallenge-AMD,然后下载。 Baidu Research Open-Access Dataset - DownloadDownload Baidu Research Open-Access Datasethttps://ai.baidu.com/bro…

【FPGA零基础学习之旅#10】按键消抖模块设计与验证(一段式状态机实现)

🎉欢迎来到FPGA专栏~按键消抖模块设计与验证 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大…

日志采集分析ELK

这里的 ELK其实对应三种不同组件 1.ElasticSearch:基于Java,一个开源的分布式搜索引擎。 2.LogStash:基于Java,开源的用于收集,分析和存储日志的工具。(它和Beats有重叠的功能,Beats出现之后&a…

无人机跟随一维高度避障场景--逻辑分析

无人机跟随一维高度避障场景--逻辑分析 1. 源由2. 视频3. 问题3.1 思维发散3.2 问题收敛 4. 图示4.1 水平模式4.2 下坡模式4.3 上坡模式4.4 碰撞分析 5. 总结5.1 一维高度避障场景5.2 业界跟随产品5.3 APM集成跟随 6. 参考资料7. 补充资料 - 大疆智能跟随7.1 炸机7.2 成功 1. 源…

安卓:网络框架okhttp

目录 一、okhttp介绍 1. OkHttpClient类: 常用方法: 2. Request类: 常用方法: 3. Response类: 常用方法: 4. Call类: 常用方法: 5. Interceptor接口: 常用方法&…

如何在 .NET Core WebApi 中处理 MultipartFormDataContent 中的文件

问题描述# 上图示例展示了用户通过 IOS 客户端发送请求时,对应后端接口接收到的 Request 内容。从请求内容的整体结果,我们可以看出这是一个 multipart/form-data 的数据格式,由于这种数据是由多个 multipart section 组成,所以我…

Reis过期删除策略

介绍 在Redis中,我们可以为键值对设置有效期,现在面临一个问题,如果一个键值对过期了,那么我们应该怎么删除呢? 我们目前有三种方案: 定时删除:在设置键的过期时间的同时,为此键设…

山西电力市场日前价格预测【2023-08-17】

日前价格预测 预测明日(2023-08-17)山西电力市场全天平均日前电价为376.70元/MWh。其中,最高日前电价为431.75元/MWh,预计出现在19: 45。最低日前电价为339.25元/MWh,预计出现在13: 15。 价差方向预测 1: 实…

WSL2 Ubuntu子系统安装OpenCV

文章目录 前言一、基本概念二、操作步骤1.下载源码2.安装依赖3.运行编译4.配置路径 前言 OpenCV用C语言编写,它的主要接口也是C语言,但是依然保留了大量的C语言接口。该库也有大量的Python, Java and MATLAB/OCTAVE (版本2.5)的接口。这些语…

【JavaEE基础学习打卡02】是时候了解Java EE了!

目录 前言一、为什么要学习Java EE二、Java EE规范介绍1.什么是规范?2.什么是Java EE规范?3.Java EE版本 三、Java EE应用程序模型1.模型前置说明2.模型具体说明 总结 前言 📜 本系列教程适用于 Java Web 初学者、爱好者,小白白。…

域名配置HTTPS

一、注册域名 这个可以在各大平台注册,具体看一下就会注册了,自己挑选一个自己喜欢的域名。 步骤一般也就是先实名,实名成功了才能注册域名。 二、办理SSL证书 这里使用的是阿里云的SSL免费证书 1、申请证书 二、填写申请 三、域名绑定生…