# 确保帐户安全的最佳做法

关于如何保护可以访问你的软件供应链的帐户的指导。

## 关于本指南

本指南介绍为提高帐户安全性而做出的影响最大的更改。 每个部分都概述了可以对流程进行的更改，以提高安全性。 影响最大的更改列在前面。

## 风险是什么？

帐户安全性是供应链安全的基础。 如果攻击者能够劫持你在 GitHub 上的帐户，他们就可以对你的代码或构建过程进行恶意更改。 因此，你的首要目标应该是让他人难以劫持你的帐户以及 你的组织的其他成员的帐户。

## 配置双因素身份验证

> \[!NOTE]
> 自 2023 年 3 月起，GitHub 要求所有在 GitHub.com 上贡献代码的用户启用一种或多种形式的双因素身份验证 (2FA)。 如果你属于符合条件的组，当选择该组进行注册时，将收到一封通知电子邮件，该电子邮件标志着 45 天的 2FA 注册期开始，并且你会看到要求在 GitHub.com 上注册 2FA 的横幅。 如果没有收到通知，则表示你属于需要启用 2FA 的组，但我们强烈建议启用 2FA。
>
> 有关 2FA 注册推出的详细信息，请参阅[此博客文章](https://github.blog/2023-03-09-raising-the-bar-for-software-security-github-2fa-begins-march-13)。

提高 你的个人帐户安全性的最佳方法是配置双因素身份验证 (2FA)。 密码本身可以通过猜测、在另一个遭到入侵的网站上重复使用或社交工程（如网络钓鱼）而泄露。 即使攻击者拥有密码，2FA 也会使帐户更加难以遭到入侵。

为确保安全可靠地访问帐户，最佳做法是始终在帐户上至少注册两个第二因素凭据。 使用额外的凭据，可确保即使无法使用某一种凭据也能登入帐户。

此外，应首选密钥和安全密钥而非身份验证器应用（称为 TOTP 应用），并且避免尽量避免使用短信。 基于短信的 2FA 和 TOTP 应用都容易受到网络钓鱼攻击，也无法提供与密钥和安全密钥相同的保护级别。 根据 [NIST 800-63B](https://nvlpubs.nist.gov/nistpubs/specialpublications/nist.sp.800-63b.pdf) 数字身份指南，不再建议使用短信。

如果你是组织所有者，则可以要求组织的所有成员启用 2FA。

要了解如何在自己的帐户上启用 2FA，请参阅 [配置双重身份验证](/zh/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication)。 要了解如何在组织中要求 2FA，请参阅 [在你的组织中要求进行双因素身份验证](/zh/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/requiring-two-factor-authentication-in-your-organization)。

### 配置个人帐户

GitHub 支持多种 2FA 选项，虽然任何一种都比不启用要好，但最安全的选项是 WebAuthn 凭据。 WebAuthn 需要用到身份验证器（例如 FIDO2 硬件安全密钥）、平台身份验证器（如 Windows Hello）、Apple 或 Google 手机 或者密码管理器。 尽管很困难，但有可能对其他形式的 2FA 进行网络钓鱼（例如，有人要求你向他们读取你的 6 位一次性密码）。 不过，WebAuthn 对网络钓鱼的抵抗力要强得多，因为协议中内置了域范围限定，可防止仿冒登录页面的网站的凭据在 GitHub 上使用。

设置 2FA 时，应始终下载恢复代码并设置多个 2FA 凭据。 这可确保对帐户的访问不依赖于单个设备。 有关详细信息，请参阅 [配置双重身份验证](/zh/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication) 和 [配置双重身份验证恢复方法](/zh/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication-recovery-methods)。

### 配置组织帐户

如果你是组织所有者，则可以看到哪些用户未启用 2FA，帮助他们进行设置，然后为组织要求 2FA。 要引导你完成此过程，请参阅：

1. ```
          [AUTOTITLE](/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/viewing-whether-users-in-your-organization-have-2fa-enabled)
   ```
2. ```
          [AUTOTITLE](/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/preparing-to-require-two-factor-authentication-in-your-organization)
   ```
3. ```
          [AUTOTITLE](/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/requiring-two-factor-authentication-in-your-organization)
   ```

## 使用 SSH 密钥连接到 GitHub

除了登录网站外，还有其他与 GitHub 交互的方式。 许多人使用 SSH 私钥为推送到 GitHub 的代码授权。 有关详细信息，请参阅“[关于 SSH](/zh/authentication/connecting-to-github-with-ssh/about-ssh)”。

与帐户密码一样，如果攻击者能够获取 SSH 私钥，他们可能会模拟你并将恶意代码推送到你拥有写权限的任何存储库。 如果将 SSH 私钥存储在磁盘驱动器上，最好使用通行短语保护它。 有关详细信息，请参阅“[使用 SSH 密钥密码](/zh/authentication/connecting-to-github-with-ssh/working-with-ssh-key-passphrases)”。

另一种方法是在硬件安全密钥上生成 SSH 密钥。 可以使用用于 2FA 的同一密钥。 硬件安全密钥很难远程入侵，因为专用 SSH 密钥保留在硬件上，并且无法直接从软件访问。 有关详细信息，请参阅“[生成新的 SSH 密钥并将其添加到 ssh-agent](/zh/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent#generating-a-new-ssh-key-for-a-hardware-security-key)”。

## 后续步骤

* [保护端到端供应链](/zh/code-security/supply-chain-security/end-to-end-supply-chain/end-to-end-supply-chain-overview)
* [保护供应链中的代码的最佳做法](/zh/code-security/supply-chain-security/end-to-end-supply-chain/securing-code)
* [保护生成系统的最佳做法](/zh/code-security/supply-chain-security/end-to-end-supply-chain/securing-builds)
* [防止组织中数据泄露的最佳做法](/zh/code-security/getting-started/best-practices-for-preventing-data-leaks-in-your-organization)