{"meta":{"title":"了解 GitHub 机密类型","intro":"了解 GitHub 机密的使用、范围和访问权限。","product":"安全性和代码质量","breadcrumbs":[{"href":"/zh/enterprise-cloud@latest/code-security","title":"安全性和代码质量"},{"href":"/zh/enterprise-cloud@latest/code-security/reference","title":"Reference"},{"href":"/zh/enterprise-cloud@latest/code-security/reference/secret-security","title":"机密安全性"},{"href":"/zh/enterprise-cloud@latest/code-security/reference/secret-security/secret-types","title":"机密类型"}],"documentType":"article"},"body":"# 了解 GitHub 机密类型\n\n了解 GitHub 机密的使用、范围和访问权限。\n\n## 如何 GitHub 存储机密\n\nGitHub 使用 [Libsodium 密封框](https://libsodium.gitbook.io/doc/public-key_cryptography/sealed_boxes) 加密机密。 机密在到达 GitHub 之前进行加密，并且会保持加密状态，直到它被 Dependabot使用， GitHub Actions或者 Codespaces。\n\n## Dependabot 秘密\n\nDependabot 机密用于存储要在 Dependabot 中使用的凭据和敏感信息。\n\nDependabot 机密在存储库的 `dependabot.yml` 文件中被引用。\n\n### Usage\n\nDependabot 密钥通常用于 Dependabot 进行身份验证以访问专用包注册表。 这允许 Dependabot 打开拉取请求以更新专用存储库中易受攻击或过时的依赖项。 用于身份验证，这些 Dependabot 机密在存储库 `dependabot.yml` 的文件中引用。\n\nDependabot 机密还可能包括由 Dependabot 启动的工作流所需的机密。 例如， Dependabot 在创建拉取请求以更新依赖项时，可以触发 GitHub Actions 工作流，或对拉取请求的注释。 在这种情况下，如果工作流是由Dependabot事件触发的，就可以从工作流文件（`.github/workflows/*.yml`）中引用机密。\n\n### Scope\n\n可以在以下位置定义 Dependabot 机密：\n\n* 存储库级别\n* 组织级别\n\nDependabot 在组织级别设置时，可以在存储库之间共享机密。 必须指定组织中的哪些存储库可以访问机密。\n\n### 访问权限\n\nDependabot 机密可供 Dependabot 访问，以便向专用注册表进行身份验证，从而更新依赖项。\n\n在 Dependabot 启动工作流的触发器事件时，GitHub Actions 机密可供 Dependabot 工作流访问。 这是因为，当工作流启动 Dependabot时，只有 Dependabot 机密可用 - 操作机密不可访问。 因此，这些工作流所需的任何机密都必须存储为 Dependabot 机密，而不是 Actions 机密。\n`pull_request_target` 事件还有其他安全限制。 请查看[限制和局限](#limitations-and-restrictions)。\n\n#### 用户访问权限\n\n存储库级机密：\n\n* 具有存储库 **管理员访问权限** 的用户可以创建和管理 Dependabot 机密。\n* 对存储库具有 **协作者访问权限** 的用户可以使用机密 Dependabot。\n\n组织级机密：\n\n* **组织所有者** 可以创建和管理 Dependabot 机密。\n* 若用户具有存储库的**协作者访问权限**并可访问每个机密，则可以将机密用于 Dependabot。\n\n### 局限和限制\n\n对于由其 Dependabot启动的工作流，事件 `pull_request_target` 处理方式与其他事件不同。 对于此事件，如果拉取请求的基本引用由 Dependabot (`github.event.pull_request.user.login == 'dependabot[bot]'`) 创建：\n\n* 该工作流接收只读 `GITHUB_TOKEN`。\n* 机密不适用于该工作流\\*\\*\\*\\*。\n\n此额外限制有助于防止 Dependabot 启动的请求可能引发潜在安全风险。\n\nDependabot 机密不会被传递给分叉。\n\n## 操作机密\n\nActions 机密用于在工作流中存储敏感信息（例如 API 密钥、身份验证令牌和其他凭据）。\n\n### Usage\n\n工作流文件 (`.github/workflows/*.yml`) 中会引用 Actions 机密。\n\n### Scope\n\n可以在以下级别定义 Actions 机密：\n\n* 存储库级别\n* 环境级别\n* 组织级别\n\n环境级机密特定于某个特定环境，例如生产环境或过渡环境。\n如果在组织级别设置，则可以跨存储库共享 Actions 机密。 可以使用访问策略来控制哪些存储库有权访问机密。\n\n### 访问权限\n\n操作机密仅在 GitHub Actions 工作流中可用。 尽管在 Actions 上运行， Dependabot 但无权访问 Actions 机密。\n\n对于由Dependabot启动的工作流，Actions 机密信息不可用。 这些工作流机密必须存储为 Dependabot 机密，才能访问工作流。\n\n存储 Actions 机密的位置决定了其可访问性：\n\n* 存储库机密：存储库中的所有工作流都可以访问该机密。\n* 环境机密：只有引用该特定环境的作业才可访问该机密。\n* 组织机密：存储库中由组织授予访问权限的所有工作流都可以访问组织机密。\n\n#### 用户访问权限\n\n存储库级机密和环境机密：\n\n* 对存储库具有“管理员访问权限”的用户可以创建和管理 Actions 机密\\*\\*\\*\\*。\n* 对存储库具有“协作者访问权限”的用户可以使用机密\\*\\*\\*\\*。\n\n组织级机密：\n\n* **组织所有者**可以创建和管理 Actions 机密。\n* 对有权访问每个机密的存储库具有“协作者访问权限”的用户可以使用该机密\\*\\*\\*\\*。\n\n### 局限和限制\n\n* Actions 密钥不适用于由Dependabot启动的工作流。\n* Actions 机密不会传递给由分叉中的拉取请求触发的工作流。\n* GitHub Actions 会自动修订打印到工作流日志的所有 GitHub 机密的内容。\n* 最多可以存储 1,000 个组织机密、100 个存储库机密和 100 个环境机密。 密码大小限于 48 KB。 有关详细信息，请参阅[机密的限制](/zh/enterprise-cloud@latest/actions/reference/security/secrets#limits-for-secrets)。\n\n## Codespaces 秘密\n\nCodespaces 机密将存储要在 GitHub Codespaces 中使用的 API 令牌和 SSH 密钥等凭据和敏感信息，从而可配置安全的开发环境。\n\n### Usage\n\nCodespaces机密可在 Codespaces 开发容器配置 (`devcontainer.json`) 中引用。\n\n### Scope\n\n可以在以下位置定义 Codespaces 机密：\n\n* 用户帐户级别\n* 存储库级别\n* 组织级别\n\n对于用户帐户级机密，可以选择哪些存储库有权访问机密。\n\nCodespaces 如果在组织级别设置，则可以跨存储库共享机密。 可以使用访问策略来控制哪些存储库有权访问机密。\n\n### 访问权限\n\nCodespaces 机密只能在 Codespaces 中被访问。\n\nGitHub Actions无法访问Codespaces的机密。\n\n#### 用户访问权限\n\n用户帐户级机密：\n\n* Codespaces 机密可用于使用可访问该机密的存储库创建的任何代码空间。\n\n存储库级机密：\n\n* 具有存储库 **管理员访问权限** 的用户可以创建和管理 Codespaces 机密。\n* 对存储库具有“协作者访问权限”的用户可以使用机密\\*\\*\\*\\*。\n\n组织级机密：\n\n* **组织所有者** 可以创建和管理 Codespaces 机密。\n* 对有权访问每个机密的存储库具有“协作者访问权限”的用户可以使用该机密\\*\\*\\*\\*。\n\n### 局限和限制\n\n* 最多可以存储 100 个 GitHub Codespaces机密。\n* 密码大小限于 48 KB。\n* Codespaces 机密不会被传递给分叉。\n\n## 延伸阅读\n\n* [为 Dependabot 配置对专用注册表的访问权限](/zh/enterprise-cloud@latest/code-security/how-tos/secure-your-supply-chain/manage-your-dependency-security/configure-access-to-private-registries#storing-credentials-for-dependabot-to-use)\n* [机密参考](/zh/enterprise-cloud@latest/actions/reference/security/secrets#limits-for-secrets)\n* [管理存储库或组织的开发环境机密](/zh/enterprise-cloud@latest/codespaces/managing-codespaces-for-your-organization/managing-development-environment-secrets-for-your-repository-or-organization)\n* [管理 GitHub Codespaces 的账户专属的机密](/zh/enterprise-cloud@latest/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces)"}