安全配置和 IAM 角色 - Amazon Elastic Beanstalk
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

安全配置和 IAM 角色

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

实例配置文件配置

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

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

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

JSON
{ "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 代表您管理 Amazon 资源。使用以下命令指定迁移期间的自定义服务角色:

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

如果不指定,eb migrate 会创建名为 aws-elasticbeanstalk-service-role 的默认服务角色,而且该服务角色具有允许 Elastic Beanstalk 担任服务角色的信任策略。要让 Elastic Beanstalk 监控环境运行状况和执行托管平台更新,此服务角色必不可少。该服务角色需要两个受管策略:

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

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

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

  • 创建并管理自动扩缩组

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

  • 将日志上传到 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 安全组,允许来自负载均衡器的流量

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

默认情况下,应用程序负载均衡器会配置为可通过互联网进行公共访问。如果您需要自定义此行为,例如限制对特定 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 绑定的站点时,请通过 Amazon Certificate Manager(ACM)集成 SSL 证书:

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

此配置会完成以下操作:

  • 将证书与应用程序负载均衡器进行关联

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

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

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 实例。迁移后,您在源服务器上创建的所有自定义用户账户或组均需要在目标环境中重新创建。

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

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

最佳实践和故障排除

角色管理

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

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

启用 Amazon CloudTrail,监控角色使用情况:

定期审查流程

建立季度审查周期,执行以下任务:

证书管理

在您的 Elastic Beanstalk 环境中,针对 SSL/TLS 证书,实施以下实践:

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

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

  • 实施 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 Logs 集成

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

对于持续存在的问题,请收集相关日志并联系 Amazon Web Services 支持,联系时提供以下信息:

  • 环境 ID

  • 部署 ID(如果适用)

  • 相关的错误消息

  • 安全变更时间表