Skip to content

Commit a15fe0b

Browse files
committed
Add GAT documentation
1 parent d75e8c8 commit a15fe0b

File tree

5 files changed

+65
-35
lines changed

5 files changed

+65
-35
lines changed

content/integrations/integrating-npm-with-external-services/about-access-tokens.mdx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,13 @@ Granular access tokens allow you to restrict access provided to the token based
5252
- Set a token expiration date
5353
- Limit token access based on IP address ranges
5454
- Select between **read-only** or **read and write** access
55+
- Configure a token to **Bypass 2FA** requirements
5556

5657
You can create up to 1000 granular access tokens on your npm account. You can set how long your token is valid for, at least one day in the future. Each token can access up to 50 organizations, and up to either 50 packages, 50 scopes, or a combination of 50 packages and scopes. Access tokens are tied to users’ permission; hence it cannot have more permission than the user at any point in time. If a user has their access revoked from a package or an org., their granular access token also will have its access revoked from those packages or org.
5758

5859
When you give a token access to an organization, the token can only be used for managing organization settings and teams or users associated with the organization. It does not give the token the right to publish packages managed by the organization.
5960

61+
The Bypass 2FA capability applies to tokens with write access and is set to false by default at token creation. When the Bypass 2FA option is set to true, this setting takes precedence over account-level and package-level 2FA settings. This means that even if account-level 2FA is enabled and/or package-level 2FA is required, 2FA will still be bypassed when using the token.
62+
6063
[create-token]: creating-and-viewing-access-tokens
6164
[secure-token]: using-private-packages-in-a-ci-cd-workflow#securing-your-token

content/integrations/integrating-npm-with-external-services/creating-and-viewing-access-tokens.mdx

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,33 +53,37 @@ You can [create](#creating-access-tokens) and [view](#viewing-access-tokens) acc
5353

5454
4. (Optional) In the **Description** field, enter a description for your token.
5555

56-
5. In the **Expiration** field, enter a token expiration period. The date must be at least 1 day in the future.
56+
5. (Optional) Check the **Bypass two-factor authentication** checkbox if you want this token to bypass 2FA requirements for write actions.
57+
- This setting is unchecked (false) by default
58+
- By checking this box, the token will bypass 2FA for write actions even if 2FA is enabled at the account or package level
5759

58-
6. (Optional) In the **Allowed IP Ranges** field, enter IP address ranges to restrict your access token to. You must use [CIDR][cidr-wiki] notation to enter IP address ranges. To add more than one allowed IP range, click **Add IP Range** and enter an IP range in the new text field.
60+
6. In the **Expiration** field, enter a token expiration period. The date must be at least 1 day in the future.
61+
62+
7. (Optional) In the **Allowed IP Ranges** field, enter IP address ranges to restrict your access token to. You must use [CIDR][cidr-wiki] notation to enter IP address ranges. To add more than one allowed IP range, click **Add IP Range** and enter an IP range in the new text field.
5963

6064
<Screenshot src="/integrations/integrating-npm-with-external-services/granular-access-token-ip-range.png" alt="Screenshot of the allowed IP ranges section" />
6165

62-
7. (Optional) In the **Packages and scopes** section, configure your token's access to packages and scopes.
66+
8. (Optional) In the **Packages and scopes** section, configure your token's access to packages and scopes.
6367
- In the **Permissions** dropdown menu, select **No access**, **Read-only**, or **Read and write**.
6468
- Under **Select Packages**, select either:
6569
- **All Packages** to grant the token access to all packages the user account has access to.
6670
- **Only select packages and scopes** to choose up to 50 specific packages or scopes to give the token access to. Then select specific packages or scopes from the dropdown menu.
6771

6872
<Screenshot src="/integrations/integrating-npm-with-external-services/granular-access-token-packages-scopes.png" alt="Screenshot of the packages and scopes section" />
6973

70-
8. (Optional) In the **Organizations** section, configure your token's access to organizations.
74+
9. (Optional) In the **Organizations** section, configure your token's access to organizations.
7175
- In the **Permissions** dropdown menu, select **No access**, **Read-only**, or **Read and write**.
7276
- Under **Select organizations**, select the organizations you want to grant your token access to.
7377

7478
<Screenshot src="/integrations/integrating-npm-with-external-services/granular-access-token-organizations.png" alt="Screenshot of the organizations section" />
7579

7680
_**Note**: When you give a token access to an organization, the token can only be used for managing organization settings and teams or users associated with the organization. It does not give the token the right to publish packages managed by the organization._
7781

78-
9. Review the token summary, then click **Generate Token**.
82+
10. Review the token summary, then click **Generate Token**.
7983

8084
<Screenshot src="/integrations/integrating-npm-with-external-services/granular-access-token-summary.png" alt="Screenshot of the granular access token summary and the generate token button" />
8185

82-
10. Copy the token from the top of page.
86+
11. Copy the token from the top of page.
8387

8488
### Creating tokens with the CLI
8589

content/integrations/integrating-npm-with-external-services/revoking-access-tokens.mdx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,19 @@ redirect_from:
44
- /revoking-authentication-tokens
55
---
66

7-
To keep your account and packages secure, we strongly recommend revoking (deleting) tokens you no longer need or that have been compromised. You can revoke any token you have created.
7+
To keep your account and packages secure, we strongly recommend revoking (deleting) tokens you no longer need or that have been compromised. You can revoke any token you have created, including granular access tokens.
8+
9+
## Revoking tokens on the website
10+
11+
1. In the upper right corner of the page, click your profile picture, then click **Access Tokens**.
12+
13+
2. Find the token you want to delete in the token list.
14+
15+
3. Click the **×** button next to the token, or select multiple tokens and click **Delete Selected Tokens**.
16+
17+
4. Confirm the deletion when prompted.
18+
19+
## Revoking tokens using the CLI
820

921
1. To see a list of your tokens, on the command line, run:
1022

content/integrations/integrating-npm-with-external-services/using-private-packages-in-a-ci-cd-workflow.mdx

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,50 +19,50 @@ If you use a different CI/CD provider, or if you need to install private package
1919

2020
## Create a new access token
2121

22-
Create a new access token that will be used only to access npm packages from a CI/CD server.
22+
Create a new granular access token that will be used only to access npm packages from a CI/CD server.
2323

2424
### Continuous integration
2525

2626
When generating an access token for use in a continuous integration environment, we recommend using a granular access token with limited access to provide greater security.
2727

28-
If you use a legacy token instead, by default, `npm token create` will generate a token with both read and write permissions. We recommend creating a read-only token:
28+
For most CI workflows that only install dependencies and run tests, a **read-only** granular access token is sufficient and most secure.
2929

30-
```
31-
npm token create --read-only
32-
```
30+
<Note>
31+
32+
**Note:** If your CI workflow requires write operations (such as publishing test packages), you may need a granular access token with read and write permissions and bypass 2FA enabled to prevent automated workflows from being blocked by 2FA prompts. However, we strongly recommend using read-only tokens whenever possible and reserving bypass 2FA for deployment workflows only.
33+
34+
</Note>
3335

34-
For more information on creating access tokens, including CIDR-whitelisted tokens, see "[Creating an access token][create-token]".
36+
For more information on creating granular access tokens, including CIDR-whitelisted tokens, see "[Creating and viewing access tokens][create-token]".
3537

3638
### Continuous deployment
3739

3840
For publishing packages in continuous deployment environments, we strongly recommend using [trusted publishing](/trusted-publishers) when available, as it provides enhanced security without requiring token management.
3941

40-
If trusted publishing is not available for your CI/CD provider, you may create an [automation token][create-token] on the website. This will allow you to publish even if you have two-factor authentication enabled on your account.
42+
If trusted publishing is not available for your CI/CD provider, you can create a [granular access token with bypass 2FA enabled][create-token] on the website. This will allow you to publish even if you have two-factor authentication enabled on your account.
4143

42-
### Interactive workflows
44+
<Note>
4345

44-
If your workflow produces a package, but you publish it manually after validation, then you will want to create a token with read and write permissions, which are granted with the standard token creation command:
46+
**Security considerations for bypass 2FA:**
4547

46-
```
47-
npm token create
48-
```
48+
- Only enable bypass 2FA when necessary for automated publishing workflows
49+
- Use the most restrictive permissions possible (limit to specific packages/scopes)
50+
- Set short expiration dates for tokens with bypass 2FA enabled
51+
- Consider using IP address restrictions to limit where the token can be used
52+
- Regularly audit and rotate tokens with bypass 2FA capabilities
53+
- **Prefer trusted publishing over bypass 2FA tokens when possible**
4954

50-
### CIDR whitelists
55+
</Note>
5156

52-
For increased security, you may use a CIDR-whitelisted token that can only be used from a certain IP address range. You can use a CIDR whitelist with a read and publish token or a read-only token:
57+
### Interactive workflows
5358

54-
```
55-
npm token create --cidr=[list]
56-
npm token create --read-only --cidr=[list]
57-
```
59+
If your workflow produces a package, but you publish it manually after validation, then you will want to create a granular access token with read and write permissions. See "[Creating and viewing access tokens][create-token]" for instructions.
5860

59-
Example:
61+
### CIDR whitelists
6062

61-
```
62-
npm token create --cidr=192.0.2.0/24
63-
```
63+
For increased security, you may use a CIDR-whitelisted granular access token that can only be used from a certain IP address range. You can configure IP address restrictions when creating your granular access token on the website.
6464

65-
For more information, see "[Creating and viewing authentication tokens][create-token]".
65+
For more information, see "[Creating and viewing access tokens][create-token]".
6666

6767
## Set the token as an environment variable on the CI/CD server
6868

content/packages-and-modules/securing-your-code/requiring-2fa-for-package-publishing-and-settings-modification.mdx

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import shared from '~/shared.js'
66

77
To protect your packages, as a package publisher, you can require everyone who has write access to a package to have two-factor authentication (2FA) enabled. This will require that users provide 2FA credentials in addition to their login token when they publish the package. For more information, see "[Configuring two-factor authentication][config-2fa]".
88

9-
You may also choose to allow publishing with either two-factor authentication _or_ with [automation tokens][creating-automation-token]. This lets you configure automation tokens in a CI/CD workflow, but requires two-factor authentication from interactive publishes.
9+
You may also choose to allow publishing with either two-factor authentication _or_ with [granular access tokens with bypass 2FA enabled][creating-granular-access-token]. This lets you configure tokens in a CI/CD workflow, but requires two-factor authentication from interactive publishes.
1010

1111
For CI/CD workflows, consider using [trusted publishing](/trusted-publishers), which provides secure, token-free publishing that automatically enforces strong authentication without requiring manual token management.
1212

@@ -26,16 +26,27 @@ For CI/CD workflows, consider using [trusted publishing](/trusted-publishers), w
2626
1. **Dont require two-factor authentication**
2727
With this option, a maintainer can publish a package or change the package settings whether they have two-factor authentication enabled or not. This is the least secure setting.
2828

29-
2. **Require two-factor authentication or automation tokens or granular access token**
30-
With this option, maintainers must have two-factor authentication enabled for their account. If they publish a package interactively, using the `npm publish` command, they will be required to enter 2FA credentials when they perform the publish. However, maintainers may also create an [automation token][creating-automation-token] or a [granular access token][creating-granular-access-token] and use that to publish. A second factor is _not_ required when using a token, making it useful for continuous integration and continuous deployment workflows.
29+
2. **Require two-factor authentication or granular access tokens**
30+
With this option, maintainers must have two-factor authentication enabled for their account. If they publish a package interactively, using the `npm publish` command, they will be required to enter 2FA credentials when they perform the publish. However, maintainers may also create a [granular access token with bypass 2FA enabled][creating-granular-access-token] and use that to publish. A second factor is _not_ required when using these specific token types, making them useful for continuous integration and continuous deployment workflows.
3131

3232
3. **Require two-factor authentication and disallow tokens**
33-
With this option, a maintainer must have two-factor authentication enabled for their account, and they must publish interactively. Maintainers will be required to enter 2FA credentials when they perform the publish. Automation tokens and granular access tokens cannot be used to publish packages.
33+
With this option, a maintainer must have two-factor authentication enabled for their account, and they must publish interactively. Maintainers will be required to enter 2FA credentials when they perform the publish. Granular access tokens cannot be used to publish packages, regardless of their bypass 2FA setting.
3434

3535
<Screenshot src="/packages-and-modules/securing-your-code/2fa-package-setting.png" alt="Screenshot showing the require two-factor option for a package" />
3636

3737
5. Click **Update Package Settings**.
3838

39+
## Granular access token behavior with 2FA
40+
41+
<Note>
42+
43+
**Important notes about granular access tokens:**
44+
45+
- **When Bypass2FA is true**: The token will bypass all 2FA requirements at all times, regardless of account-level or package-level 2FA settings
46+
- **When Bypass2FA is false (default)**: The system will check account-level and package-level settings to determine if 2FA is required
47+
- When "disallow tokens" is selected at the package level, granular access tokens cannot be used regardless of their bypass 2FA setting
48+
49+
</Note>
50+
3951
[config-2fa]: configuring-two-factor-authentication
40-
[creating-automation-token]: creating-and-viewing-access-tokens#creating-granular-access-tokens-on-the-website
4152
[creating-granular-access-token]: creating-and-viewing-access-tokens#creating-granular-access-tokens-on-the-website

0 commit comments

Comments
 (0)