Amazon S3 提供了一系列的工具,使我们能够细粒度地控制对存储桶和其中的对象的访问。这些工具主要基于IAM用户的身份或请求的网络位置(如IP地址或VPC)。
1. 基于身份的访问控制:
你可以创建一个 IAM 策略并将其附加到特定的 IAM 用户、组或角色上,以确保只有这些身份可以访问 S3 资源。
示例策略:
这个策略允许特定 IAM 用户访问 example-bucket
:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::ACCOUNT-ID-WITHOUT-HYPHENS:user/USERNAME"},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::example-bucket/*"
}
]
}
2. 基于网络位置的访问控制:
你可以基于请求的来源 IP 或是否来自特定 VPC 来限制访问。
IP 地址:IP 地址是任何设备在互联网或本地网络上的唯一地址。它允许网络中的设备彼此识别和通信。常见的 IPv4 地址格式为
xxx.xxx.xxx.xxx
,例如192.168.1.1
。VPC 内的 IP 地址:Amazon Virtual Private Cloud (VPC) 允许你在 AWS 云中启动资源(如 EC2 实例)并为它们提供一个私有的、隔离的网络环境。这些私有网络资源有它们自己的私有 IP 地址。通常,这些 IP 地址在
10.0.0.0/16
或其他私有 IP 地址范围内。
示例策略:
以下策略仅允许来自 IP 地址 203.0.113.0/24
以及 VPC vpc-xxxxxxxx
的访问:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::example-bucket/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": "203.0.113.0/24"
},
"StringNotEquals": {
"aws:sourceVpc": "vpc-xxxxxxxx"
}
}
}
]
}