阅读(1939) (12)

npm 使用安全令牌

2021-09-02 15:14:06 更新

每当你登录 npm 时,都会生成一个安全令牌。令牌验证你的帐户,并授予你发布和访问模块的权利。

因为令牌只是一个十六进制字符串,你可以在其他工具(例如持续集成测试环境)中使用该令牌,以便该工具可以使用完成任务所需的访问权限运行。例如,Travis-CI 提供了一个可以分配给令牌值的环境变量。这使Travis-CI能够以你的 npm 用户身份运行 npm,包括安装你有权访问的私有包的能力。

通过阅读本章内容,来了解如何管理安全令牌。

注意:如果你希望将令牌用于测试和其他特殊目的,则需要额外的步骤。这些步骤不在本章的范围内。

令牌命令能够让你:

  • 查看令牌以便于跟踪和管理。
  • 创建新令牌,指定只读或完全权限。
  • 删除/撤销令牌。
  • 根据 IP 地址范围 (CIDR) 限制访问。

如何查看账户上的令牌

要查看与你的帐户关联的令牌,请执行下列命令:

npm token list

下表解释了令牌列表。

令牌既可以是只读的,也可以是 CIDR 白名单的。

如果在个人资料上启用了双因素身份验证,则你已经实施了额外的安全层。

注意:令牌列表显示了令牌的截断版本。如果你需要查看完整令牌,请查看npmrc 文件

如何创建新令牌

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

在创建新令牌之前,请确定所需的令牌类型:

  • 只读(安装/分发权限)
  • 完全许可(出版权)
  • CIDR白名单(受ip地址限制)

新令牌的默认设置是完全权限。

  • 只读令牌允许安装和分发。
  • 完全权限令牌允许安装、分发、发布以及您对帐户拥有的所有权利
  • CIDR 白名单令牌只能在指定的 IP 地址范围内使用。例如,使用它可以将令牌限制为单个公司或指定的开发团队。目前仅支持 IPv4。

当令牌为只读时,它不能用于对包进行更改。如果令牌未明确设置为只读,则它具有完全权限,包括发布和修改权限。

如何创建新的完全权限令牌

要创建新的完整权限令牌,请键入:

npm token create

如果设置了双因素身份验证,系统将提示你输入 npm 密码,然后是 OTP。npm 将显示此表:

提示:保存令牌字段的屏幕截图,因为这将是你查看它的唯一机会。

请注意,只读默认为false。

如何创建新的只读令牌

要创建新的只读令牌,请输入下列命令:

npm token create --read-only

如果你设置了双因素身份验证,系统将提示你输入 npm 密码,然后是 OTP。npm 将显示此表:

请注意,只读设置为true。

如何创建新的受 CIDR 限制的令牌

要限制令牌以使其只能从指定的 IP 地址使用,你可以创建一个 CIDR 限制的令牌。CIDR 是 Classless Inter-Domain Routing 的缩写。该CIDR Wiki页面将让你开始。

使用 CIDR 限制可以让你强制使用令牌的任何人或任何系统物理地或远程地在指定的 IP 地址范围内。

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

例子:

    npm token create --cidr=192.0.2.0/24

如果你设置了双因素身份验证,系统将提示你输入 npm 密码,然后是 OTP。npm 将显示此表:

如果你看到这样的消息:

npm ERR! CIDR whitelist contains invalid CIDR entry: X.X.X.X./YY,Z.Z.. . .



(其中返回的字符串是您输入的字符串)请确保 CIDR 字符串有效且格式正确。注意:npm 目前只支持 IPv4。

如何创建受 CIDR 限制的只读令牌

要创建也是只读的受 CIDR 限制的令牌,请输入下列命令:

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

如何撤销令牌

你可以删除(撤销)令牌,无论它是何时创建的。这使你可以控制你可能希望收回的访问权限。

删除令牌的命令是: npm token delete 以下是步骤:

  1. 类型 npm token list
  2. 找到与你要删除的令牌相关联的令牌 ID。
  3. 键入“npm token delete 123456”,其中 123456 是令牌 id。注意:令牌的截断版本将不起作用。

npm will report 'Removed 1 token'

输入“npm token list”以确认令牌已被删除。 以下屏幕截图演示了这些步骤:

注意:屏幕插图中显示的所有令牌已被撤销。

注意:在某些情况下,令牌成功撤销之前可能会有长达一个小时的延迟。npm 目前正在努力使撤销在所有情况下立即发生。