通过 Java 进行 S3 编程访问
S3 programmatic access via Java
我需要在我的 Java 程序中创建一个私有 S3 存储桶和一个仅允许访问该存储桶的 IAM 用户。
所以我需要一些管理员帐户凭据来创建 S3Client
AmazonS3 s3client = AmazonS3ClientBuilder
.standard()
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.withRegion(Regions.US_EAST_2)
.build();
然后进行一些空值检查等创建我的存储桶
s3client.createBucket(bucketName);
现在我需要阻止所有 public 访问此存储桶(我可以吗?)
并创建一个 AWS 凭证类型等于“访问密钥 - 编程访问”的 IAM 用户并将其策略设置为类似这样的内容,以便它只能访问我刚刚创建的那个存储桶 (Just a snippet from the official documentation)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListObjectsInBucket",
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::bucket-name"]
},
{
"Sid": "AllObjectActions",
"Effect": "Allow",
"Action": "s3:*Object",
"Resource": ["arn:aws:s3:::bucket-name/*"]
}
]
}
这可能吗?
事实上,这是在存储桶级别或 IAM 级别具有安全性的主要问题。
在 “此用户可以在 AWS 中做什么?” 中,您可以探索使用 IAM 策略(托管策略、内联策略...)
在谁可以访问此 S3 存储桶? 然后您可以探索使用 S3 存储桶策略将存储桶中的安全性集中到帐户...
默认情况下,任何新存储桶都处于无法 public 访问的模式,并且任何用户 IAM 都有权访问 S3 可以 访问它。
最后我确实找到了一个很好的解决方案。
Sampler
我需要在我的 Java 程序中创建一个私有 S3 存储桶和一个仅允许访问该存储桶的 IAM 用户。
所以我需要一些管理员帐户凭据来创建 S3Client
AmazonS3 s3client = AmazonS3ClientBuilder
.standard()
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.withRegion(Regions.US_EAST_2)
.build();
然后进行一些空值检查等创建我的存储桶
s3client.createBucket(bucketName);
现在我需要阻止所有 public 访问此存储桶(我可以吗?)
并创建一个 AWS 凭证类型等于“访问密钥 - 编程访问”的 IAM 用户并将其策略设置为类似这样的内容,以便它只能访问我刚刚创建的那个存储桶 (Just a snippet from the official documentation)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListObjectsInBucket",
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::bucket-name"]
},
{
"Sid": "AllObjectActions",
"Effect": "Allow",
"Action": "s3:*Object",
"Resource": ["arn:aws:s3:::bucket-name/*"]
}
]
}
这可能吗?
事实上,这是在存储桶级别或 IAM 级别具有安全性的主要问题。
在 “此用户可以在 AWS 中做什么?” 中,您可以探索使用 IAM 策略(托管策略、内联策略...)
在谁可以访问此 S3 存储桶? 然后您可以探索使用 S3 存储桶策略将存储桶中的安全性集中到帐户...
默认情况下,任何新存储桶都处于无法 public 访问的模式,并且任何用户 IAM 都有权访问 S3 可以 访问它。
最后我确实找到了一个很好的解决方案。 Sampler