在构建时避免这五个常见的AWS错误配置它还让我们有机会进行相对简单的更改,这些更改可能会对我们的云安全状况产生持久影响。为了证明这一点,我们分析了现实环境中IaC模块最常见的AmazonWebServices(AWS)安全错误。在本文中,我们将剖析最常见的不合规AWS政策和相关风险。我们还将介绍解决每个错误所需的简单构建时Terraform配置。确保存储在S3存储桶中的所有数据都经过安全加密静态S3支持使用AES-256加密标准的简单免费加密。我们都知道,有人可能会访问您存储数据的硬盘驱动器,静态S3存储桶加密对于防止数据暴露给这些人很重要。为遵守此政策(这是PCI-DSS和NIST-800的要求),需要在相关存储桶上默认设置加密。这将导致保存到该S3存储桶的所有后续项目自动加密。将以下块添加到TerraformS3资源以添加AES-256加密:server_side_encryption_configuration{rule{apply_server_side_encryption_by_default{sse_algorithm="AES256"}}}确保启动配置EBS中存储的所有数据都经过安全加密的AmazonElasticBlockStorage(EBS)volumes支持内置加密,但默认情况下不加密。EBS启动配置指定AmazonEC2AutoScaling启动配置,AutoScaling组可以使用这些配置来配置AmazonEC2实例。当您加密整个EBS卷时,存储在静态卷上的数据、磁盘I/O、从该卷创建的快照以及在EBS和EC2之间传输的数据都将被加密。对您的数据进行静态加密可确保未经授权的人无法访问它。PCI-DSS还要求遵守此政策。为防止Terraform模块中出现此AWS错误,请确保为EBS启动配置启用了加密:micro"+encrypted=enabled确保启用客户创建的CMK轮换AWSKeyManagementService(KMS)允许客户轮换备用密钥。密钥材料存储在KMS中,并与客户主密钥(CMK)的密钥ID绑定。备用密钥用于执行加密操作,例如加密和解密。密钥自动轮换现在保留所有以前的备份密钥,用于加密数据的透明解密。密钥不轮换的时间越长,用它加密的数据就越多,被破坏的可能性就越大。公开此类密钥会泄露使用该密钥加密的所有数据,因此强烈建议每年轮换一次加密密钥。默认情况下不启用CMK自动轮换,但建议使用它以帮助减少密钥泄露的潜在影响。它还需要启用PCI-DSS、CSI和ISO27001合规性。要解决Terraform中的此错误配置,请启用密钥轮换:资源“aws_kms_key”“kms_key_1”{description="kms_key_1"deletion_window_in_days=10key_usage="ENCRYPT_DECRYPT"is_enabled=true+enable_key_rotation=true}确保DynamoDB时间点恢复(备份)启用AmazonDynamoDB的时间点恢复(PITR)后,您只需单击一下即可恢复DynamoDB表数据。这在您深入研究数据泄露和数据损坏攻击时提供故障保护,这也是PIC-DSS、CIS和ISO27001所要求的。但是,要创建和访问DynamoDB备份,您需要启用PITR,它提供可以使用各种编程参数控制的持续备份。通过在DynamoDB表上配置point_in_time配置来解决此错误配置:resource"aws_dynamodb_table""basic-dynamodb-table"{name="GameScores"billing_mode="PROVISIONED"read_capacity=20write_capacity=20hash_key="UserId"range_key="GameTitle"+point_in_time-recovery=enabled确保在推送时进行ECR映像扫描已启用AmazonECR支持使用常见漏洞和披露(CVE)数据库扫描容器映像中的漏洞。建议您在每次推送时启用ECR,以帮助识别不良图像和将漏洞引入图像的特定标签。ISO27001要求必须在每次推送时启用ECR扫描。要修复构建时资源,请将scan_on_push设置为true:resource"aws_ecr_repository""foo"{name="bar"image_tag_mutability="MUTABLE"image_scanning_configuration{+scan_on_push=true}}确保存储在SQS队列中的所有数据都已加密AmazonSimple队列服务(AmazonSQS)允许对通过每个队列发送的消息进行加密。通过基于消息的加密拒绝对特定数据的访问,从而启用另一级别的数据访问管理并通过加密保护敏感数据。如果您处于受监管的市场中,例如医疗保健中的HIPAA、金融中的PCIDSS和政府中的FedRAMP,您需要确保随服务交付的敏感数据消息在静态时被加密。通过指定SQS用于加密SQS配置块上的数据的KMS密钥,可以避免这种错误配置。在Terraform中,设置AmazonSQS在再次调用AWSKMS之前可以重用数据密钥加密或解密消息的时间长度(以秒为单位)。resource"aws_sqs_queue""terraform_queue"{name="terraform-example-queue"+kms_master_key_id="alias/aws/sqs"+kms_data_key_reuse_period_seconds=300}结论如您所见,修复IaC错误配置通常需要添加到现有块中简单缺少配置参数,或将不正确的值更改为合规状态。但是,进行这些小的更改可能会产生重大影响,因为它们将为未来的部署提供信息。通过在构建时在IaC模板和模块中实施通用安全策略,您可以解决现有问题并防止部署新的错误配置。在新基础架构上线后,这也是一种节省时间来解决生产中反复出现的问题的好方法。这就是为什么我们认为IaC对于越来越关注云的组织至关重要。原标题:Avoidthe5MostCommonAmazonWebServicesMisconfigurationsinBuild-Time,作者:NimrodKor
