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.rhkb.cn/news/92406.html

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

相关文章

Android的学习系列之Android Studio Setup安装

Android的学习系列之Android Studio Setup安装 [TOC](Android的学习系列之Android Studio Setup安装) 前言Android平台搭建总结 前言 还是项目需要,暂时搭建安卓的运行平台。 Android平台搭建 安装包 双击安装包,进入安装。 下一步 根据自己需求&a…

React源码解析18(7)------ 实现事件机制(onClick事件)

摘要 在上一篇中,我们实现了useState的hook,但由于没有实现事件机制,所以我们只能将setState挂载在window上。 而这一篇主要就是来实现事件系统,从而实现通过点击事件进行setState。 而在React中,虽然我们是将事件绑…

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

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

MAVEN利器:一文带你了解MAVEN以及如何配置

前言: 强大的构建工具——Maven。作为Java生态系统中的重要组成部分,Maven为开发人员提供了一种简单而高效的方式来构建、管理和发布Java项目。无论是小型项目还是大型企业级应用,Maven都能帮助开发人员轻松处理依赖管理、编译、测试和部署等…

禾赛科技Q2营收交付双新高,国产激光雷达从量变到质变

随着2022年激光雷达元年、2023年城市智能辅助驾驶(NOA)元年相继到来,激光雷达产业迎来爆发期。 今年以来,自动驾驶公司、汽车制造商以及移动出行公司等各路人马积极推动城市级别的智能辅助驾驶全面落地,北京、上海、深…

Windows - UWP - 网络不好的情况下安装(微软商店)MicrosoftStore的应用

Windows - UWP - 网络不好的情况下安装(微软商店)MicrosoftStore的应用 前言 UWP虽然几乎被微软抛弃了,但不得不否认UWP应用给用户带来的体验。沙箱的运行方式加上微软的审核,用户使用起来非常放心,并且完美契合Wind…

【elasticSearch系】3.完整搭建详尽版elk

话不多说,我们先看下经典的elk 是由哪些组件搭建组合起来的 elasticSearch和kibana搭建 可以查看之前我搭建elasticsearch和kibana 的这篇文章 logstash搭建 为了和之前我搭建elasticsearch和kibana版本保持一致,这里我们还是选择7.17.3 下载地址 点击下载,这里为了方…

207、仿真-51单片机脉搏心率与血氧报警Proteus仿真设计(程序+Proteus仿真+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 四、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一&a…

Leetcode-每日一题【剑指 Offer 31. 栈的压入、弹出序列】

题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列&#xf…

phpstorm配置ftp同步文件到服务器

这里的默认快捷键 不是 CtrlS ;需要设置快捷键,这里原来是save all操作时上传文件到服务器; ** 设置好快捷键后按 CtrlS就会同步文件(添加删除文件后保存,服务器也会同步) ** 搜索出save all 后&#xf…

FreeRTOS模板-开启资源追踪

目录 开启宏定义 使用API函数 演示效果 测试代码 开启宏定义 #define configUSE_TRACE_FACILITY 1 //TODO 查看任务状态#ifndef INCLUDE_uxTaskGetStackHighWaterMark#define INCLUDE_uxTaskGetStackHighWaterMark 1 //TODO 开启堆栈使用剩余量的检测 #…

一种多策略下RabbitMQ的延时队列实现

1.为什么会用到延时队列? 场景: 最近在开发一款系统中遇到这样一个场景,A系统开通套餐需要把套餐信息以邮件的形式发送给相关工作人员,经过人工审核通过后,在B系统里面开通,A系统会调B系统套餐列表接口查询套餐是否开通成功,开通成功则从A系统去完成订单,假如超过设定时间未开…

【javaweb】学习日记Day2 - JavaScript入门

目录 一、引入方式 1、内部脚本 2、外部脚本 二、基础语法 1、输出语句 2、定义变量类型 3、数据类型 4、运算符 (1)类型转换 5、函数 (1)方法一 (2)方法二 三、对象 1、Array数组 &#x…

设计HTML5表单

HTML5基于Web Forms 2.0标准对HTML4表单进行全面升级,在保持简便、易用的基础上,新增了很多控件和属性,从而减轻了开发人员的负担。表单为访问者提供了与网站进行互动的途径,完整的表单一般由控件和脚本两部分组成。 1、认识HTML…

Martin_DHCP_V3.0 (DHCP自动化泛洪攻击GUI)

Github>https://github.com/MartinxMax/Martin_DHCP_V3.0 首页 Martin_DHCP_V3.0 自动化DHCP洪泛攻击 Martin_DHCP_V3.0 使用方法 安装三方库 #python3 1.RunMe_Install_Packet.py 攻击路由器 #python3 Martin_DHCP_Attack.py 填写网卡 填写攻击次数 开始运行

【Linux】进程地址空间

目录 一、回顾我们以前学习的地址空间二、进程地址空间三、进程地址空间的作用四、解决一个地址出现两个值的问题 一、回顾我们以前学习的地址空间 这个内存布局真是的我们实实在在的内存嘛&#xff1f; 答案是不是的 下面我们来验证 1 #include<stdio.h>2 #include<a…

腾讯云CVM服务器竞价实例是什么?和按量计费有什么区别?

腾讯云服务器CVM计费模式分为包年包月、按量计费和竞价实例&#xff0c;什么是竞价实例&#xff1f;竞价实例和按量付费相类似&#xff0c;优势是价格更划算&#xff0c;缺点是云服务器实例有被自动释放风险&#xff0c;腾讯云服务器网来详细说下什么是竞价实例&#xff1f;以及…

linux I/O性能优化

Linux 文件系统 磁盘和文件系统的关系&#xff1a; 磁盘为系统提供了最基本的持久化存储。 文件系统则在磁盘的基础上&#xff0c;提供了一个用来管理文件的树状结构。 文件系统工作原理 索引节点和目录项 文件系统&#xff0c;本身是对存储设备上的文件&#xff0c;进行组织…

elementui form组件出现英文提示

今天让解决一个bug&#xff0c;是表单组件提示词会出现英文。 问题情景如下&#xff1a; 有时会出现中文&#xff0c;有时会出现英文。 解决方法&#xff1a; 经查看&#xff0c;代码采用的是elementui的form组件&#xff0c;在el-form-item中使用了required属性&#xff0c;同…

实时安全分析监控加强网络安全

网络犯罪分子只需几分钟&#xff0c;有时甚至几秒钟即可泄露敏感数据。但是&#xff0c;IT 团队可能无法在数周内发现这些违规行为。通常&#xff0c;这些违规行为是由外部方或客户发现的&#xff0c;到那时为时已晚。随着网络漏洞的激增&#xff0c;对安全分析的需求空前高涨。…