

适用于 JavaScript 的 Amazon SDK v2 已终止支持。建议您迁移到 [适用于 JavaScript 的 Amazon SDK v3](https://docs.amazonaws.cn//sdk-for-javascript/v3/developer-guide/)。有关更多详情和如何迁移的信息，请参阅本[公告](https://www.amazonaws.cn/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/)。

# 此 Amazon 产品或服务的安全性
安全性

云安全性一直是 Amazon Web Services (Amazon) 的重中之重。作为 Amazon 客户，您将从专为满足大多数安全敏感型企业的要求而打造的数据中心和网络架构中受益。安全性是 Amazon 和您的共同责任。[责任共担模式](https://www.amazonaws.cn/compliance/shared-responsibility-model/)将其描述为云的安全性和云中的安全性。

**云的安全性**：Amazon 负责保护运行在 Amazon 云中提供的所有服务的基础设施，并向您提供可安全使用的服务。我们的安全责任是 Amazon 中的最高优先级，作为 [Amazon 合规性计划](https://www.amazonaws.cn/compliance/programs/)的一部分，我们安全性的有效性由第三方审计员定期进行测试和验证。

**云中的安全性**：您的责任由您所使用的 Amazon 服务以及其他因素决定，包括您数据的敏感性、您企业的要求以及适用的法律法规。

此 Amazon 产品或服务通过它支持的特定 Amazon Web Services (Amazon) 服务遵循[责任共担模式](https://www.amazonaws.cn/compliance/shared-responsibility-model/)。有关 Amazon 服务安全性信息，请参阅 [Amazon 服务安全性文档页面](https://docs.amazonaws.cn/security/?id=docs_gateway#aws-security)和[合规性计划规定的 Amazon 合规性工作范围内的 Amazon 服务](https://www.amazonaws.cn/compliance/services-in-scope/)。

**Topics**
+ [数据保护](data-protection.md)
+ [身份和访问管理](security-iam.md)
+ [合规性验证](compliance-validation.md)
+ [韧性](disaster-recovery-resiliency.md)
+ [基础设施安全性](infrastructure-security.md)
+ [

# 强制实施最低版本 TLS
](enforcing-tls.md)

# 本 Amazon 产品或服务中的数据保护
数据保护

Amazon [责任共担模式](https://www.amazonaws.cn/compliance/shared-responsibility-model/)适用于本 Amazon 产品或服务中的数据保护。如该模式中所述，Amazon 负责保护运行所有 Amazon Web Services 云 的全球基础结构。您负责维护对托管在此基础结构上的内容的控制。您还负责您所使用的 Amazon Web Services 服务 的安全配置和管理任务。有关数据隐私的更多信息，请参阅[数据隐私常见问题](https://www.amazonaws.cn/compliance/data-privacy-faq/)。

出于数据保护目的，建议您保护 Amazon Web Services 账户 凭证并使用 Amazon IAM Identity Center 或 Amazon Identity and Access Management（IAM）设置单个用户。这样，每个用户只获得履行其工作职责所需的权限。还建议您通过以下方式保护数据：
+ 对每个账户使用多重身份验证（MFA）。
+ 使用 SSL/TLS 与 Amazon 资源进行通信。我们要求使用 TLS 1.2，建议使用 TLS 1.3。
+ 使用 Amazon CloudTrail 设置 API 和用户活动日记账记录。有关使用 CloudTrail 跟踪来捕获 Amazon 活动的信息，请参阅《Amazon CloudTrail 用户指南》**中的[使用 CloudTrail 跟踪](https://docs.amazonaws.cn/awscloudtrail/latest/userguide/cloudtrail-trails.html)。
+ 使用 Amazon 加密解决方案以及 Amazon Web Services 服务中的所有默认安全控制。
+ 使用高级托管安全服务（例如 Amazon Macie），它有助于发现和保护存储在 Amazon S3 中的敏感数据。
+ 如果在通过命令行界面或 API 访问 Amazon 时需要经过 FIPS 140-3 验证的加密模块，请使用 FIPS 端点。有关可用的 FIPS 端点的更多信息，请参阅《美国联邦信息处理标准（FIPS）第 140-3 版》[https://www.amazonaws.cn/compliance/fips/](https://www.amazonaws.cn/compliance/fips/)。

强烈建议您切勿将机密信息或敏感信息（如您客户的电子邮件地址）放入标签或自由格式文本字段（如**名称**字段）。这包括使用本 Amazon 产品或服务或者其他使用控制台、API、Amazon CLI 或 Amazon SDK 的 Amazon Web Services 服务时。在用于名称的标签或自由格式文本字段中输入的任何数据都可能会用于计费或诊断日志。如果您向外部服务器提供 URL，强烈建议您不要在网址中包含凭证信息来验证对该服务器的请求。

# 身份和访问管理
身份和访问管理

Amazon Identity and Access Management（IAM）是一项 Amazon Web Services 服务，可以帮助管理员安全地控制对 Amazon 资源的访问。IAM 管理员控制谁可以通过*身份验证*（登录）和*授权*（具有权限）来使用 Amazon 资源。IAM 是一项无需额外费用即可使用的。Amazon Web Services 服务

**Topics**
+ [

## 受众
](#security_iam_audience)
+ [

## 使用身份进行身份验证
](#security_iam_authentication)
+ [

## 使用策略管理访问
](#security_iam_access-manage)
+ [

## Amazon Web Services 服务如何与 IAM 协同工作
](#security_iam_service-with-iam)
+ [

## 对 Amazon 身份和访问进行问题排查
](#security_iam_troubleshoot)

## 受众


使用 Amazon Identity and Access Management（IAM）的方式因您可以在 Amazon 中执行的操作而异。

**服务用户** – 如果使用 Amazon Web Services 服务来执行任务，则管理员会为您提供所需的凭证和权限。当您使用更多 Amazon 特征来完成工作时，您可能需要额外权限。了解如何管理访问权限有助于您向管理员请求适合的权限。如果您无法访问 Amazon 中的功能，请参阅[对 Amazon 身份和访问进行问题排查](#security_iam_troubleshoot)或您所使用的 Amazon Web Services 服务的用户指南。

**服务管理员**：如果您在公司负责管理 Amazon 资源，则您可能具有 Amazon 的完全访问权限。您有责任确定您的服务用户应访问哪些 Amazon 特征和资源。然后，您必须向 IAM 管理员提交请求以更改服务用户的权限。请查看该页面上的信息以了解 IAM 的基本概念。要详细了解您的公司如何将 IAM 与 Amazon 结合使用，请参阅您所使用的 Amazon Web Services 服务的用户指南。

**IAM 管理员**：如果您是 IAM 管理员，您可能希望了解如何编写策略以管理对 Amazon 的访问权限的详细信息。要查看您可在 IAM 中使用的 Amazon 基于身份的策略示例，请参阅您所使用的 Amazon Web Services 服务的用户指南。

## 使用身份进行身份验证


身份验证是您使用身份凭证登录 Amazon 的方法。您必须作为 Amazon Web Services 账户根用户、IAM 用户或通过担任 IAM 角色进行身份验证。

对于编程访问，Amazon 提供了 SDK 和 CLI 来对请求进行加密签名。有关更多信息，请参阅*《IAM 用户指南》*中的[适用于 API 请求的 Amazon 签名版本 4](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_sigv.html)。

### Amazon Web Services 账户 根用户


 当您创建 Amazon Web Services 账户 时，最初使用的是一个对所有 Amazon Web Services 服务和资源拥有完全访问权限的登录身份（称为 Amazon Web Services 账户*根用户*）。我们强烈建议不要使用根用户进行日常任务。有关需要根用户凭证的任务，请参阅《IAM 用户指南》**中的[需要根用户凭证的任务](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

### 联合身份


作为最佳实践，请要求人类用户必须使用带有身份提供者的联合身份验证才能使用临时凭证访问 Amazon Web Services 服务。

*联合身份*是来自企业目录、Web 身份提供者的用户，或 Amazon Directory Service 中的用户（这些用户使用来自身份源的凭证访问 Amazon Web Services 服务）。联合身份代入可提供临时凭证的角色。

### IAM 用户和群组


*[IAM 用户](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_users.html)*是对某个人员或应用程序具有特定权限的一个身份。建议使用临时凭证，而非具有长期凭证的 IAM 用户。有关更多信息，请参阅*《IAM 用户指南》*中的[要求人类用户使用带有身份提供商的联合身份验证才能使用临时凭证访问 Amazon](https://docs.amazonaws.cn/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp)。

[https://docs.amazonaws.cn/IAM/latest/UserGuide/id_groups.html](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_groups.html)指定一组 IAM 用户，便于更轻松地对大量用户进行权限管理。有关更多信息，请参阅*《IAM 用户指南》*中的 [IAM 用户使用案例](https://docs.amazonaws.cn/IAM/latest/UserGuide/gs-identities-iam-users.html)。

### IAM 角色


*[IAM 角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles.html)*是具有特定权限的身份，可提供临时凭证。您可以通过[从用户切换到 IAM 角色（控制台）](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)或调用 Amazon CLI 或 Amazon API 操作来担任角色。有关更多信息，请参阅《IAM 用户指南》**中的[担任角色的方法](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_manage-assume.html)。

IAM 角色对于联合用户访问、临时 IAM 用户权限、跨账户访问、跨服务访问以及在 Amazon EC2 上运行的应用程序非常有用。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的跨账户资源访问](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

## 使用策略管理访问


您将创建策略并将其附加到 Amazon 身份或资源，以控制 Amazon 中的访问。策略在与身份或资源关联时定义权限。当主体发出请求时，Amazon 会评估这些策略。大多数策略在 Amazon 中存储为 JSON 文档。有关 JSON 策略文档的更多信息，请参阅*《IAM 用户指南》*中的 [JSON 策略概述](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies.html#access_policies-json)。

管理员使用策略，通过定义哪个**主体**可以在什么**条件**下对哪些**资源**执行哪些**操作**来指定谁有权访问什么。

默认情况下，用户和角色没有权限。IAM 管理员创建 IAM 策略并将其添加到角色中，然后用户可以担任这些角色。IAM 策略定义权限，与执行操作所用的方法无关。

### 基于身份的策略


基于身份的策略是您附加到身份（用户、组或角色）的 JSON 权限策略文档。这些策略控制身份可以执行什么操作、对哪些资源执行以及在什么条件下执行。要了解如何创建基于身份的策略，请参阅《IAM 用户指南》**中的[使用客户管理型策略定义自定义 IAM 权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_create.html)。

基于身份的策略可以是*内联策略*（直接嵌入到单个身份中）或*托管策略*（附加到多个身份的独立策略）。要了解如何在托管策略和内联策略之间进行选择，请参阅*《IAM 用户指南》*中的[在托管策略与内联策略之间进行选择](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html)。

### 基于资源的策略


基于资源的策略是附加到资源的 JSON 策略文档。示例包括 IAM *角色信任策略*和 Amazon S3 *存储桶策略*。在支持基于资源的策略的服务中，服务管理员可以使用它们来控制对特定资源的访问。您必须在基于资源的策略中[指定主体](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_elements_principal.html)。

基于资源的策略是位于该服务中的内联策略。您不能在基于资源的策略中使用来自 IAM 的 Amazon 托管式策略。

### 访问控制列表（ACL）


访问控制列表（ACL）控制哪些主体（账户成员、用户或角色）有权访问资源。ACL 与基于资源的策略类似，尽管它们不使用 JSON 策略文档格式。

Amazon S3、Amazon WAF 和 Amazon VPC 是支持 ACL 的服务示例。要了解有关 ACL 的更多信息，请参阅《Amazon Simple Storage Service 开发人员指南》**中的[访问控制列表（ACL）概览](https://docs.amazonaws.cn/AmazonS3/latest/userguide/acl-overview.html)。

### 其他策略类型


Amazon 支持额外的策略类型，这些策略类型可以设置由更常用的策略类型授予的最大权限：
+ **权限边界** – 设置基于身份的策略可以授予 IAM 实体的最大权限。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 实体的权限边界](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_boundaries.html)。
+ **服务控制策略（SCP）**– 指定 Amazon Organizations 中组织或组织单元的最大权限。有关更多信息，请参阅《Amazon Organizations 用户指南》**中的[服务控制策略](https://docs.amazonaws.cn/organizations/latest/userguide/orgs_manage_policies_scps.html)。
+ **资源控制策略（RCP）**– 设置对账户中资源的最大可用权限。有关更多信息，请参阅《Amazon Organizations 用户指南》**中的[资源控制策略（RCP）](https://docs.amazonaws.cn/organizations/latest/userguide/orgs_manage_policies_rcps.html)。
+ **会话策略** – 在为角色或联合用户创建临时会话时，作为参数传递的高级策略。有关更多信息，请参阅《IAM 用户指南》**中的[会话策略](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies.html#policies_session)。

### 多个策略类型


当多个类型的策略应用于一个请求时，生成的权限更加复杂和难以理解。要了解 Amazon 如何确定在涉及多种策略类型时是否允许请求，请参阅《IAM 用户指南》**中的[策略评估逻辑](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)。

## Amazon Web Services 服务如何与 IAM 协同工作


要大致了解 Amazon Web Services 服务如何与大多数 IAM 功能结合使用，请参阅《IAM 用户指南》**中的[与 IAM 结合使用的 Amazon 服务](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。

要学习如何将特定的 Amazon Web Services 服务与 IAM 结合使用，请参阅相关服务的《用户指南》的安全部分。

## 对 Amazon 身份和访问进行问题排查


使用以下信息可帮助您诊断和修复在使用 Amazon 和 IAM 时可能遇到的常见问题。

**Topics**
+ [

### 我无权在 Amazon 中执行操作
](#security_iam_troubleshoot-no-permissions)
+ [

### 我无权执行 iam:PassRole
](#security_iam_troubleshoot-passrole)
+ [

### 我希望允许我的 Amazon Web Services 账户以外的人访问我的 Amazon 资源
](#security_iam_troubleshoot-cross-account-access)

### 我无权在 Amazon 中执行操作


如果您收到错误提示，指明您无权执行某个操作，则必须更新策略以允许执行该操作。

当 `mateojackson` IAM 用户尝试使用控制台查看有关虚构 `my-example-widget` 资源的详细信息，但不拥有虚构 `awes:GetWidget` 权限时，会发生以下示例错误。

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: awes:GetWidget on resource: my-example-widget
```

在此情况下，必须更新 `mateojackson` 用户的策略，以允许使用 `awes:GetWidget` 操作访问 `my-example-widget` 资源。

如果您需要帮助，请联系 Amazon 管理员。您的管理员是提供登录凭证的人。

### 我无权执行 iam:PassRole


如果您收到一个错误，表明您无权执行 `iam:PassRole` 操作，则必须更新策略以允许您将角色传递给。Amazon

有些 Amazon Web Services 服务 允许您将现有角色传递到该服务，而不是创建新服务角色或服务相关角色。为此，您必须具有将角色传递到服务的权限。

当名为 `marymajor` 的 IAM 用户尝试使用控制台在 Amazon 中执行操作时，会发生以下示例错误。但是，服务必须具有服务角色所授予的权限才可执行此操作。Mary 不具有将角色传递到服务的权限。

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

在这种情况下，必须更新 Mary 的策略以允许她执行 `iam:PassRole` 操作。

如果您需要帮助，请联系 Amazon 管理员。您的管理员是提供登录凭证的人。

### 我希望允许我的 Amazon Web Services 账户以外的人访问我的 Amazon 资源


您可以创建一个角色，以便其他账户中的用户或您组织外的人员可以使用该角色来访问您的资源。您可以指定谁值得信赖，可以代入角色。对于支持基于资源的策略或访问控制列表（ACL）的服务，您可以使用这些策略向人员授予对您的资源的访问权。

要了解更多信息，请参阅以下内容：
+ 要了解 Amazon 是否支持这些特征，请参阅 [Amazon Web Services 服务如何与 IAM 协同工作](#security_iam_service-with-iam)
+ 要了解如何为您拥有的 Amazon Web Services 账户 中的资源提供访问权限，请参阅《IAM 用户指南》**中的[为您拥有的另一个 Amazon Web Services 账户 中的 IAM 用户提供访问权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html)。
+ 要了解如何为第三方 Amazon Web Services 账户 提供您的资源的访问权限，请参阅《IAM 用户指南》**中的[为第三方拥有的 Amazon Web Services 账户 提供访问权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)。
+ 要了解如何通过身份联合验证提供访问权限，请参阅《IAM 用户指南》**中的[为经过外部身份验证的用户（身份联合验证）提供访问权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html)。
+ 要了解使用角色和基于资源的策略进行跨账户访问之间的差别，请参阅《IAM 用户指南》**中的 [IAM 中的跨账户资源访问](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

# 此 Amazon 产品或服务的合规性验证
合规性验证

要了解某个 Amazon Web Services 服务 是否在特定合规性计划范围内，请参阅[合规性计划范围内的 Amazon Web Services 服务](https://www.amazonaws.cn/compliance/services-in-scope/)，然后选择您感兴趣的合规性计划。有关常规信息，请参阅 、、[Amazon Web Services 合规性计划](https://www.amazonaws.cn/compliance/programs/)。

您可以使用 Amazon Artifact 下载第三方审计报告。有关更多信息，请参阅[在 Amazon Artifact 中下载报告](https://docs.amazonaws.cn/artifact/latest/ug/downloading-documents.html)。

您在使用 Amazon Web Services 服务 时的合规性责任由您的数据的敏感性、您公司的合规性目标以及适用的法律法规决定。有关您在使用 Amazon Web Services 服务时的合规责任的更多信息，请参阅 [Amazon 安全性文档](https://docs.amazonaws.cn/security/)。

此 Amazon 产品或服务通过它支持的特定 Amazon Web Services（Amazon）服务遵循[责任共担模式](https://www.amazonaws.cn/compliance/shared-responsibility-model/)。有关 Amazon 服务安全性信息，请参阅 [Amazon 服务安全性文档页面](https://docs.amazonaws.cn/security/?id=docs_gateway#aws-security)和[合规性计划规定的 Amazon 合规性工作范围内的 Amazon 服务](https://www.amazonaws.cn/compliance/services-in-scope/)。

# 此 Amazon 产品或服务的故障恢复能力
韧性

Amazon 全球基础设施围绕 Amazon Web Services 区域和可用区而构建。

Amazon Web Services 区域 提供多个在物理上独立且隔离的可用区，这些可用区与延迟率低、吞吐量高且冗余性高的网络连接在一起。

利用可用区，您可以设计和运营在可用区之间无中断地自动实现失效转移的应用程序和数据库。与传统的单个或多个数据中心基础设施相比，可用区具有更高的可用性、容错能力和可扩展性。

有关 Amazon 区域和可用区的更多信息，请参阅 [Amazon 全球基础架构](https://www.amazonaws.cn/about-aws/global-infrastructure/)。

此 Amazon 产品或服务通过它支持的特定 Amazon Web Services (Amazon) 服务遵循[责任共担模式](https://www.amazonaws.cn/compliance/shared-responsibility-model/)。有关 Amazon 服务安全性信息，请参阅 [Amazon 服务安全性文档页面](https://docs.amazonaws.cn/security/?id=docs_gateway#aws-security)和[合规性计划规定的 Amazon 合规性工作范围内的 Amazon 服务](https://www.amazonaws.cn/compliance/services-in-scope/)。

# 此 Amazon 产品或服务的基础设施安全性
基础设施安全性

此 Amazon 产品或服务使用托管式服务，因此受 Amazon 全球网络安全保护。有关 Amazon 安全服务以及 Amazon 如何保护基础设施的信息，请参阅 [Amazon 云安全](https://www.amazonaws.cn/security/)。要按照基础设施安全最佳实践设计您的 Amazon 环境，请参阅《安全性支柱 Amazon Well‐Architected Framework》中的[基础设施保护](https://docs.amazonaws.cn/wellarchitected/latest/security-pillar/infrastructure-protection.html)**。

您可以使用 Amazon 发布的 API 调用通过网络访问此 Amazon 产品或服务。客户端必须支持以下内容：
+ 传输层安全性协议（TLS）。我们要求使用 TLS 1.2，建议使用 TLS 1.3。
+ 具有完全向前保密（PFS）的密码套件，例如 DHE（临时 Diffie-Hellman）或 ECDHE（临时椭圆曲线 Diffie-Hellman）。大多数现代系统（如 Java 7 及更高版本）都支持这些模式。

此外，必须使用访问密钥 ID 和与 IAM 主体关联的秘密访问密钥来对请求进行签名。或者，您可以使用 [Amazon Security Token Service](https://docs.amazonaws.cn/STS/latest/APIReference/Welcome.html)（Amazon STS）生成临时安全凭证来对请求进行签名。

此 Amazon 产品或服务通过它支持的特定 Amazon Web Services（Amazon）服务遵循[责任共担模式](https://www.amazonaws.cn/compliance/shared-responsibility-model/)。有关 Amazon 服务安全性信息，请参阅 [Amazon 服务安全性文档页面](https://docs.amazonaws.cn/security/?id=docs_gateway#aws-security)和[合规性计划规定的 Amazon 合规性工作范围内的 Amazon 服务](https://www.amazonaws.cn/compliance/services-in-scope/)。

# 强制实施最低版本 TLS
现在，所有区域中的所有 Amazon 服务 API 端点都支持 TLS 1.3

更新了支持的 TLS 版本和用于记录 TLS 版本的方法。强制实施最低版本 TLS

添加了有关 TLS 1.3 的信息。

要提高与 Amazon 服务通信时的安全性，请将 适用于 JavaScript 的 Amazon SDK 配置为使用 TLS 1.2 或更高版本。

传输层安全性协议（TLS）是 Web 浏览器和其它应用程序使用的一种协议，用于确保通过网络交换的数据的隐私和完整性。

**重要**  
自 2024 年 6 月 10 日起，我们[宣布](https://www.amazonaws.cn/blogs//security/faster-aws-cloud-connections-with-tls-1-3/) TLS 1.3 在每个 Amazon 区域的 Amazon 服务 API 端点上均可用。适用于 JavaScript 的 Amazon SDK v2 本身不会协商 TLS 版本。相反，它使用由 Node.js 确定的 TLS 版本，该版本可通过 `https.Agent` 进行配置。Amazon 建议使用 Node.js 的当前活动 LTS 版本。

## 在 Node.js 中验证并强制执行 TLS


将 适用于 JavaScript 的 Amazon SDK 与 Node.js 结合使用时，将使用底层 Node.js 安全层设置 TLS 版本。

Node.js 12.0.0 及更高版本使用支持 TLS 1.3 的最低版本 OpenSSL 1.1.1b。适用于 JavaScript 的 Amazon SDK v2 在 TLS 1.3 可用时默认使用该版本，但如果需要，可默认使用较低的版本。

### 验证 OpenSSL 和 TLS 的版本


要获取计算机上的 Node.js 使用的 OpenSSL 版本，请运行以下命令。

```
node -p process.versions
```

列表中的 OpenSSL 版本是 Node.js 使用的版本，如以下示例所示。

```
openssl: '1.1.1b'
```

要获取计算机上的 Node.js 使用的 TLS 版本，请启动 Node shell 并按顺序运行以下命令。

```
> var tls = require("tls");
> var tlsSocket = new tls.TLSSocket();
> tlsSocket.getProtocol();
```

最后一条命令输出 TLS 版本，如以下示例所示。

```
'TLSv1.3'
```

Node.js 默认使用此版本的 TLS，如果调用不成功，则会尝试协商另一个版本的 TLS。

### 检查支持的最低和最高 TLS 版本


开发人员可以使用以下脚本来检查 Node.js 中支持的最低和最高 TLS 版本：

```
var tls = require("tls");
console.log("Supported TLS versions:", tls.DEFAULT_MIN_VERSION + " to " + tls.DEFAULT_MAX_VERSION);
```

最后一个命令输出默认的最低和最高 TLS 版本，如以下示例所示。

```
Supported TLS versions: TLSv1.2 to TLSv1.3
```

### 强制使用最低版本的 TLS


当调用失败时，Node.js 会协商 TLS 的版本。您可以在此协商期间强制执行允许的最低 TLS 版本，无论是在命令行运行脚本时，还是根据您的 JavaScript 代码中的请求。

要通过命令行指定最低 TLS 版本，必须使用 Node.js 版本 11.4.0 或更高版本。要安装特定的 Node.js 版本，请先按照 [Node Version Manager Installing and Updating](https://github.com/nvm-sh/nvm#installing-and-updating) 中的步骤安装 Node Version Manager（nvm）。然后运行以下命令来安装并使用特定版本的 Node.js。

```
nvm install 11
nvm use 11
```

------
#### [ Enforcing TLS 1.2 ]

要强制规定 TLS 1.2 是允许的最低版本，请在运行脚本时指定 `--tls-min-v1.2` 参数，如以下示例所示。

```
node --tls-min-v1.2 yourScript.js
```

要在 JavaScript 代码中为特定请求指定允许的最低 TLS 版本，请使用 `httpOptions` 参数指定协议，如以下示例所示。

```
const https = require("https");
const {NodeHttpHandler} = require("@aws-sdk/node-http-handler");
const {DynamoDBClient} = require("@aws-sdk/client-dynamodb");

const client = new DynamoDBClient({
    region: "us-west-2",
    requestHandler: new NodeHttpHandler({
        httpsAgent: new https.Agent(
            {
                secureProtocol: 'TLSv1_2_method'
            }
        )
    })
});
```

------
#### [ Enforcing TLS 1.3 ]

要强制规定 TLS 1.3 是允许的最低版本，请在运行脚本时指定 `--tls-min-v1.3` 参数，如以下示例所示。

```
node --tls-min-v1.3 yourScript.js
```

要在 JavaScript 代码中为特定请求指定允许的最低 TLS 版本，请使用 `httpOptions` 参数指定协议，如以下示例所示。

```
const https = require("https");
const {NodeHttpHandler} = require("@aws-sdk/node-http-handler");
const {DynamoDBClient} = require("@aws-sdk/client-dynamodb");

const client = new DynamoDBClient({
    region: "us-west-2",
    requestHandler: new NodeHttpHandler({
        httpsAgent: new https.Agent(
            {
                secureProtocol: 'TLSv1_3_method'
            }
        )
    })
});
```

------

## 在浏览器脚本中验证并强制执行 TLS


当您在浏览器脚本中使用 SDK for JavaScript 时，浏览器设置会控制所使用的 TLS 版本。浏览器使用的 TLS 版本无法通过脚本发现或设置，必须由用户配置。要验证和强制执行浏览器脚本中使用的 TLS 版本，请参阅特定浏览器的说明。

------
#### [ Microsoft Internet Explorer ]

1. 打开 **Internet Explorer**。

1. 从菜单栏中选择**工具** - **Internet 选项** - **高级**选项卡。

1. 向下滚动到**安全**类别，手动选中**使用 TLS 1.2** 选项框。

1. 单击**确定**。

1. 关闭浏览器并重新启动 Internet Explorer。

------
#### [ Microsoft Edge ]

1. 在 Windows 菜单搜索框中，键入 *Internet options*。

1. 在**最佳匹配**下，单击 **Internet 选项**。

1. 在 **Internet 属性**窗口的**高级**选项卡上，向下滚动到**安全**部分。

1. 选中**用户 TLS 1.2** 复选框。

1. 单击**确定**。

------
#### [ Google Chrome ]

1. 打开 **Google Chrome**。

1. 按 **Alt F** 并选择**设置**。

1. 向下滚动并选择**显示高级设置...**。

1. 向下滚动到**系统**部分，然后单击**打开代理设置...**。

1. 选择**高级**选项卡。

1. 向下滚动到**安全**类别，手动选中**使用 TLS 1.2** 选项框。

1. 单击**确定**。

1. 关闭浏览器并重启 Google Chrome。

------
#### [ Mozilla Firefox ]

1. 打开 **Firefox**。

1. 在地址栏中键入 **about:config**，然后按 Enter。

1. 在**搜索**字段中输入 **tls**。找到并双击 **security.tls.version.min** 条目。

1. 将整数值设置为 3 以强制将 TLS 1.2 协议设为默认协议。

1. 单击**确定**。

1. 关闭浏览器并重启 Mozilla Firefox。

------
#### [ Apple Safari ]

没有启用 SSL 协议的选项。如果您使用的是 Safari 浏览器 7 或更高版本，则会自动启用 TLS 1.2。

------