概述目标:通过生命周期规则、版本控制与服务器端加密(SSE-S3/SSE-KMS)实现成本优化与数据合规。适用:日志归档、备份文件、用户上传资源的长期保存与分层存储。核心与实战开启版本控制:aws s3api put-bucket-versioning --bucket my-bucket --versioning-configuration Status=Enabled
生命周期配置(30天过期临时文件;90天转存Glacier;删除过期的多版本):aws s3api put-bucket-lifecycle-configuration --bucket my-bucket --lifecycle-configuration '{
"Rules": [
{
"ID": "tmp-expire",
"Filter": {"Prefix": "tmp/"},
"Status": "Enabled",
"Expiration": {"Days": 30}
},
{
"ID": "archive-glacier",
"Filter": {"Prefix": "logs/"},
"Status": "Enabled",
"Transitions": [{"Days": 90, "StorageClass": "GLACIER"}]
},
{
"ID": "noncurrent-clean",
"Status": "Enabled",
"NoncurrentVersionExpiration": {"NoncurrentDays": 60}
}
]
}'
服务器端加密策略:aws s3api put-bucket-encryption --bucket my-bucket --server-side-encryption-configuration '{
"Rules": [{
"ApplyServerSideEncryptionByDefault": {
"SSEAlgorithm": "aws:kms",
"KMSMasterKeyID": "arn:aws:kms:us-east-1:123456789012:key/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}]
}'
强制TLS与禁止公有读的Bucket策略:aws s3api put-bucket-policy --bucket my-bucket --policy '{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyInsecureTransport",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
],
"Condition": {"Bool": {"aws:SecureTransport": "false"}}
},
{
"Sid": "DenyPublicRead",
"Effect": "Deny",
"Principal": "*",
"Action": ["s3:GetObject"],
"Resource": "arn:aws:s3:::my-bucket/*",
"Condition": {"StringEquals": {"s3:ExistingObjectTag/public": "true"}}
}
]
}'
示例单对象加密与KMS密钥指定:aws s3 cp report.pdf s3://my-bucket/reports/ --sse aws:kms --sse-kms-key-id arn:aws:kms:us-east-1:123456789012:key/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
取回Glacier归档(通过S3对象恢复):aws s3api restore-object --bucket my-bucket --key logs/2025/11/26/app.log --restore-request '{"Days": 2, "GlacierJobParameters": {"Tier": "Standard"}}'
验证与监控校验生命周期与加密配置:aws s3api get-bucket-lifecycle-configuration --bucket my-bucket
aws s3api get-bucket-encryption --bucket my-bucket
访问控制检查(阻止匿名与HTTP):aws s3api get-bucket-policy --bucket my-bucket
aws s3api get-public-access-block --bucket my-bucket
CloudTrail与KMS审计密钥使用与对象操作,保证合规留痕。常见误区忽视版本控制导致误删除不可恢复;开启版本控制并配置非当前版本过期策略。将所有对象立即转Glacier导致频繁恢复成本高;根据访问热度分层与合理TTL。未强制SSE-KMS与TLS导致明文或不安全传输风险;应在Bucket级别强制。结语通过S3生命周期与加密策略可实现安全合规与成本控制,并通过CLI与审计日志进行验证与持续治理。

发表评论 取消回复