在AWS EC2中实现数据静态存储安全的一种解决方法是使用加密技术和访问控制策略。下面是一个基本的代码示例,演示如何使用AWS SDK for Python(boto3)来创建一个加密的S3存储桶,并为EC2实例分配适当的IAM角色。
首先,确保您已经安装了boto3库,并配置了AWS CLI工具。
import boto3
# 创建S3存储桶
def create_s3_bucket(bucket_name):
s3 = boto3.client('s3')
s3.create_bucket(
Bucket=bucket_name,
CreateBucketConfiguration={
'LocationConstraint': 'us-west-2' # 根据您的区域选择合适的位置约束
}
)
print(f'S3 bucket {bucket_name} 创建成功')
# 为S3存储桶启用默认加密
def enable_s3_bucket_encryption(bucket_name):
s3 = boto3.client('s3')
s3.put_bucket_encryption(
Bucket=bucket_name,
ServerSideEncryptionConfiguration={
'Rules': [
{
'ApplyServerSideEncryptionByDefault': {
'SSEAlgorithm': 'AES256'
}
}
]
}
)
print(f'S3 bucket {bucket_name} 的默认加密已启用')
# 创建IAM角色并分配给EC2实例
def create_iam_role(role_name):
iam = boto3.client('iam')
trust_policy = {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
response = iam.create_role(
RoleName=role_name,
AssumeRolePolicyDocument=json.dumps(trust_policy)
)
role_arn = response['Role']['Arn']
print(f'IAM role {role_name} 创建成功,ARN: {role_arn}')
# 为IAM角色分配适当的权限
policy = {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket"
],
"Resource": [
f"arn:aws:s3:::{bucket_name}",
f"arn:aws:s3:::{bucket_name}/*"
]
}
]
}
iam.put_role_policy(
RoleName=role_name,
PolicyName=f'{role_name}-policy',
PolicyDocument=json.dumps(policy)
)
print(f'IAM role {role_name} 的权限已分配')
# 示例用法
bucket_name = 'my-secure-bucket'
role_name = 'my-ec2-role'
create_s3_bucket(bucket_name)
enable_s3_bucket_encryption(bucket_name)
create_iam_role(role_name)
请注意,这只是一个基本的示例,您可能需要根据您的具体需求进行更多的配置和定制。另外,您还需要确保配置了正确的IAM凭证来执行这些操作,并且具有足够的权限来创建和管理S3存储桶以及IAM角色。