

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Elastic Beanstalk 的安全最佳实践
<a name="security-best-practices"></a>

AWS Elastic Beanstalk 提供了多种安全功能，供您在制定和实施自己的安全策略时考虑。以下最佳实践是一般指导原则，并不代表完整安全解决方案。由于这些最佳实践可能不适合您的环境或不满足您的环境要求，因此将其视为有用的考虑因素，而不是惯例。

有关其他 Elastic Beanstalk 安全主题，请参阅[AWS Elastic Beanstalk 安全](security.md)。

## 预防性安全最佳实践
<a name="security-best-practices.preventive"></a>

预防性安全控制措施试图在事件发生之前进行预防。

### 实施最低权限访问
<a name="security-best-practices.preventive.least-priv"></a>

[Elastic AWS Identity and Access Management Beanstalk 为实例[配置文件、](iam-servicerole.md)服务角色和 IAM 用户提供 (IAM) 托管[策略](iam-instanceprofile.md)。](AWSHowTo.iam.managed-policies.md)这些托管策略指定了正确运行环境和应用程序可能所需的所有权限。

您的应用程序可能不需要我们托管策略中的全部权限。您可以自定义它们，并仅授予环境的实例、Elastic Beanstalk 服务和用户执行其任务所需的权限。这与用户策略特别相关，其中不同的用户角色可能具有不同的权限需求。实施最低权限访问对于减小安全风险以及可能由错误或恶意意图造成的影响至关重要。

### 保护敏感的应用程序数据
<a name="security-best-practices.preventive.sensitive-data"></a>

当您的应用程序需要访问诸如凭证、API 密钥或配置数据之类的敏感信息时，请遵循以下做法来维护安全性：
+ 使用相应的 P AWS Systems Manager arameter Store AWS Secrets Manager SDKs 或 APIs 在您的应用程序代码中直接检索敏感数据。这是访问敏感信息最安全、最灵活的方式。
+ 如果您将来自 AWS Secrets Manager 或 P AWS Systems Manager arameter Store 的敏感数据作为环境变量传递（请参阅[为环境变量获取密钥](AWSHowTo.secrets.env-vars.md)），请谨慎限制对 EC2 密钥对的访问权限，并为您的实例配置具有最低权限的相应的 IAM 角色。
+ 切勿在应用程序代码中打印、记录或公开敏感数据，因为这些值最终可能会出现在日志文件或错误消息中，未经授权的用户可能会看到这些文件或消息。

### 定期更新您的平台
<a name="security-best-practices.preventive.update"></a>

Elastic Beanstalk 定期发布新平台版本更新其所有平台。新的平台版本提供了操作系统、运行时、应用程序服务器和 Web 服务器更新以及 Elastic Beanstalk 组件更新。其中很多平台更新包括重要的安全修复。确保您的 Elastic Beanstalk 环境在受支持的平台版本（通常是平台的最新版本）上运行。有关更多信息，请参阅 [更新 Elastic Beanstalk 环境的平台版本](using-features.platform.upgrade.md)。

保持环境平台最新的最简单方法是将环境配置为使用[托管平台更新](environment-platform-update-managed.md)。

### IMDSv2 在环境实例上强制执行
<a name="security-best-practices.preventive.imdsv2"></a>

Elastic Beanstalk 环境中的亚马逊弹性计算云 (Amazon EC2) 实例使用实例元数据服务 (IMDS)（实例上的组件）来安全地访问实例元数据。IMDS 支持两种访问数据的方法： IMDSv1 和。 IMDSv2 IMDSv2 使用面向会话的请求并缓解了几种可用于尝试访问 IMDS 的漏洞。有关优势的详细信息 IMDSv2，请参阅为[ EC2 实例元数据服务添加深度防御的增强功能](https://aws.amazon.com/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/)。

IMDSv2 更安全，因此最好在您的实例 IMDSv2 上强制使用。要强制执行 IMDSv2，请确保应用程序的所有组件都支持 IMDSv2，然后将其禁用 IMDSv1。有关更多信息，请参阅 [在 Elastic Beanstalk 环境的实例上配置 IMDS](environments-cfg-ec2-imds.md)。

## 检测性安全最佳实践
<a name="security-best-practices.detective"></a>

侦探性安全控件会在发生安全违规后识别它们。它们可以帮助您发现潜在安全威胁或事件。

### 实施监控
<a name="security-best-practices.detective.monitor"></a>

监控是维护 Elastic Beanstalk 解决方案的可靠性、安全性、可用性和性能的重要组成部分。 AWS 提供了多种工具和服务来帮助您监控 AWS 服务。

以下是要监视的项目的一些示例：
+ *Elastic Beanstalk 的亚马逊 CloudWatch 指标* — 为 Elastic Beanstalk 的关键指标和应用程序的自定义指标设置警报。有关更多信息，请参阅 [在亚马逊上使用 Elastic Beanstalk CloudWatch](AWSHowTo.cloudwatch.md)。
+ *AWS CloudTrail 条目*-跟踪可能影响可用性的操作，例如`UpdateEnvironment`或`TerminateEnvironment`。有关更多信息，请参阅 [使用记录 Elastic Beanstalk API 调用 AWS CloudTrail](AWSHowTo.cloudtrail.md)。

### 启用 AWS Config
<a name="security-best-practices.detective.config"></a>

AWS Config 提供了您账户中 AWS 资源配置的详细视图。您可以查看资源的关联方式、获取配置更改的历史记录并了解关系和配置如何随时间的推移而变化。

您可以使用 AWS Config 来定义用于评估资源配置的数据合规性的规则。 AWS Config 规则代表您的 Elastic Beanstalk 资源的理想配置设置。如果某个资源违反规则并被标记为*不合规*，则 AWS Config 可以使用亚马逊简单通知服务 (Amazon SNS) Simple SNS Service 主题提醒您。有关详细信息，请参阅[使用以下方法查找和跟踪 Elastic Beanstalk 资源 AWS Config](AWSHowTo.config.md)。