安全配置和 IAM 角色 - AWS Elastic Beanstalk

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

安全配置和 IAM 角色

eb migrate命令通过 IAM 角色、实例配置文件和服务角色管理 AWS 安全配置。了解这些组件可确保在迁移期间进行适当的访问控制和安全合规。

实例配置文件配置

实例配置文件充当 Elastic Beanstalk EC2 附加到您环境中实例的 IAM 角色的容器。执行时eb migrate,您可以指定自定义实例配置文件:

PS C:\migrations_workspace> eb migrate --instance-profile "CustomInstanceProfile"

如果您未指定实例配置文件,请使用以下权限eb migrate创建默认配置文件:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::elasticbeanstalk-*", "arn:aws:s3:::elasticbeanstalk-*/*" ] } ] }

服务角色管理

服务角色允许 Elastic Beanstalk 代表你管理资源 AWS 。在迁移期间使用以下命令指定自定义服务角色:

PS C:\migrations_workspace> eb migrate --service-role "CustomServiceRole"

如果未指定,则aws-elasticbeanstalk-service-role使用允许 Elastic Beanstalk 代入该角色的信任策略eb migrate创建一个名为的默认服务角色。这个服务角色对于 Elastic Beanstalk 监控环境的运行状况和执行托管平台更新至关重要。服务角色需要两个托管策略:

  • AWSElasticBeanstalkEnhancedHealth-允许 Elastic Beanstalk 使用增强型运行状况报告系统监控实例和环境运行状况

  • AWSElasticBeanstalkManagedUpdates-允许 Elastic Beanstalk 执行托管平台更新,包括在有新平台版本可用时更新环境资源

使用这些策略,服务角色有权执行以下操作:

  • 创建和管理 Auto Scaling 群组

  • 创建和管理应用程序负载均衡器

  • 将日志上传到 Amazon CloudWatch

  • 管理 EC2 实例

有关服务角色的更多信息,请参阅Elastic Beanstalk 服务角色《Elastic Beanstalk 开发者指南》。

安全组配置

eb migrate命令会根据您的 IIS 站点绑定自动配置安全组。例如,如果您的源环境中有使用端口 80、443 和 8081 的站点,则配置结果如下:

<site name="Default Web Site"> <bindings> <binding protocol="http" bindingInformation="*:80:" /> <binding protocol="https" bindingInformation="*:443:" /> </bindings> </site> <site name="InternalAPI"> <bindings> <binding protocol="http" bindingInformation="*:8081:" /> </bindings> </site>

迁移过程将完成以下操作:

  • 创建负载均衡器安全组,允许来自互联网的端口 80 和 443 上的入站流量 (0.0.0.0/0)

  • 创建 EC2 安全组,允许来自负载均衡器的流量

  • 如果--copy-firewall-config已指定,则配置其他端口(例如 8081)

默认情况下,Application Load Balancer 配置为可通过互联网进行公共访问。如果您需要自定义此行为,例如限制对特定 IP 范围的访问或使用私有负载均衡器,则可以使用--vpc-config参数覆盖默认 VPC 和安全组配置:

PS C:\migrations_workspace> eb migrate --vpc-config vpc-config.json

例如,以下vpc-config.json配置在私有子网中创建私有负载均衡器:

{ "id": "vpc-12345678", "publicip": "false", "elbscheme": "internal", "ec2subnets": ["subnet-private1", "subnet-private2"], "elbsubnets": ["subnet-private1", "subnet-private2"] }

有关 VPC 配置选项的更多信息,请参阅VPC 配置

SSL 证书集成

迁移具有 HTTPS 绑定的网站时,请通过 AWS Certificate Manager (ACM) 集成 SSL 证书:

PS C:\migrations_workspace> eb migrate --ssl-certificates "arn:aws:acm:region:account:certificate/certificate-id"

此配置完成了以下操作:

  • 将证书与 Application Load Balancer 关联起来

  • 在负载均衡器上保持 HTTPS 终止

  • 保留负载均衡器与实例之间的内部 HTTP 通信 EC2

Windows 身份验证

对于使用 Windows 身份验证的应用程序,按如下方式eb migrate保留应用程序中的身份验证设置:web.config

<configuration> <system.webServer> <security> <authentication> <windowsAuthentication enabled="true"> <providers> <add value="Negotiate" /> <add value="NTLM" /> </providers> </windowsAuthentication> </authentication> </security> </system.webServer> </configuration>
重要

eb migrate命令不会将用户个人资料或账户从您的源环境复制到目标 Elastic Beanstalk 实例。迁移后,需要在目标环境中重新创建您在源服务器上创建的任何自定义用户帐户或组。

默认情况下IIS_IUSRS,目标 Windows 服务器实例中包含内置 Windows 帐户(如和群组)以及所有其他内置帐户和群组。IUSR有关内置 IIS 帐户和组的更多信息,请参阅 Microsoft 文档中的了解 IIS 中的内置用户和组帐户

如果您的应用程序依赖于自定义 Windows 用户帐户或 Active Directory 集成,则需要在迁移完成后单独配置这些方面。

最佳实践和故障排除

角色管理

在管理您的 Elastic Beanstalk 环境的角色时实施 AWS IAM 最佳实践:

角色创建和管理
监控和审计

启用 AWS CloudTrail 以监控角色使用情况:

定期审查程序

建立季度审核周期,以完成以下任务:

  • 使用 IAM 访问分析器审计未使用的权限

  • 移除过时的权限

  • 根据最低权限原则更新角色

证书管理

在您的 Elastic Beanstalk 环境中对 SSL/TLS 证书实施以下做法:

证书生命周期
安全标准
  • 使用 TLS 1.2 或更高版本

  • 遵守 HTTPS 侦听器的AWS 安全策略

  • 如果需要,实施 HTTP 严格传输安全 (HSTS)

安全组管理

实施以下安全组最佳实践:

规则管理
定期审计

建立月度审核以完成以下任务:

  • 识别并删除未使用的规则

  • 验证源/目的地要求

  • 检查是否有重叠的规则

日志记录和监控

为了进行有效的安全监控,请配置以下日志:

EC2 实例上的 Windows 事件日志
# Review Security event log PS C:\migrations_workspace> Get-EventLog -LogName Security -Newest 50 # Check Application event log PS C:\migrations_workspace> Get-EventLog -LogName Application -Source "IIS*"
CloudWatch 日志集成

将 CloudWatch Logs 代理配置为将 Windows 事件日志流式传输到以 CloudWatch 进行集中监控和警报。

对于持续存在的问题,请收集这些日志并联系 AWS 支持 以获取以下信息:

  • 环境 ID

  • 部署 ID(如果适用)

  • 相关的错误消息

  • 安全变更时间表