ElasticCache备份数据导出到S3

ElasticCache 备份的数据导出到S3,S3需要开启对应的服务权限,才可以导出

已美东弗吉尼亚为例,S3策略如下。打开存储桶,在权限中设置存储桶策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "us-east-1.elasticache-snapshot.amazonaws.com"
                ]
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::tx-hw-data-backup",   # S3名称
                "arn:aws:s3:::tx-hw-data-backup/*"  # S3名称  
            ]
        }
    ]
}

 

如果我想从外部的服务器上走公网下载S3中的文件,策略该怎么写呢?

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",  # 第一个策略
            "Principal": {
                "Service": "us-east-1.elasticache-snapshot.amazonaws.com"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::elastic-cache-backup-1",
                "arn:aws:s3:::elastic-cache-backup-1/*"
            ]
        },
        {
            "Sid": "AllowExternalServerAccess", # 第二个策略
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::elastic-cache-backup-1/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "43.130.141.213/32"
                }
            }
        }
    ]
}

  

写多条桶策略,格式如下:

在Amazon S3中,如果有多条策略需要应用到同一个存储桶,你需要在存储桶策略中分别列出每一条策略。每条策略都遵循相同的JSON格式,并在同一个Statement数组中列出。以下是一个示例,展示了如何在同一个存储桶策略中包含多条策略:

{  
    "Version": "2012-10-17",  
    "Statement": [  
        {  
            "Sid": "Statement1",  
            "Effect": "Allow",  
            "Principal": "*",  
            "Action": ["s3:GetObject"],  
            "Resource": "arn:aws:s3:::your-bucket-name/*",  
            "Condition": {"IpAddress": {"aws:SourceIp": "external-server-ip-address-1/32"}}  
        },  
        {  
            "Sid": "Statement2",  
            "Effect": "Allow",  
            "Principal": {"AWS": "arn:aws:iam::account-id:user/specific-user"},  
            "Action": ["s3:GetObject", "s3:PutObject"],  
            "Resource": ["arn:aws:s3:::your-bucket-name/specific-folder/*"]  
        },  
        {  
            "Sid": "Statement3",  
            "Effect": "Deny",  
            "Principal": "*",  
            "Action": "s3:DeleteObject",  
            "Resource": "arn:aws:s3:::your-bucket-name/*"  
        }  
    ]  
}

在这个示例中:

  • Statement1 允许来自特定IP地址的外部服务器访问存储桶中的所有对象(读取权限)。
  • Statement2 允许指定的AWS账户中的特定用户访问存储桶中特定文件夹的对象,并具有读取和写入权限。
  • Statement3 拒绝所有用户对存储桶中任何对象的删除权限。

请注意以下几点:

  • Sid 是每条策略的唯一标识符,用于区分不同的策略语句。
  • Effect 可以是 Allow 或 Deny,用于指定策略的效果。
  • Principal 指定了哪些AWS账户、用户或角色受到策略的影响。使用 * 表示所有用户。
  • Action 列出了允许或拒绝的操作,如 s3:GetObjects3:PutObject 和 s3:DeleteObject 等。
  • Resource 指明了策略适用的S3资源,可以是整个存储桶或特定的对象或文件夹。
  • Condition 是可选的,用于进一步限制策略的应用条件,如IP地址范围。

在实际应用中,你需要根据你的具体需求来编写策略。请务必仔细检查和测试你的策略,以确保它们按照预期工作,并且不会意外地暴露敏感数据或允许未经授权的访问。此外,定期审查和更新策略也是保持良好安全实践的一部分。

 

posted @ 2024-04-25 13:28  羊脂玉净瓶  阅读(32)  评论(0)    收藏  举报