В документе API AWS https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_assumerole.html упоминается, что мы можем ограничивать пользователей для определенных операций, используя политики на основе сеансов.Моя политика на основе сеансов для вашей справки: -
val policy: String =
"""
|{
|"Version": "2012-10-17",
|"Statement": [
|{
|"Effect": "Deny",
|"Action": ["s3:ListBucket"],
|"Resource": ["arn:aws:s3:::test"]
|}
|]
|}
""".stripMargin
Несмотря на то, что в моей роли запрещена операция ListBucket, AWS разрешает доступ к Bucket.И я не могу навязать S3 разрешения уровня сеанса.Для роли IAM я предоставил разрешение S3FullAccess, а для пользователя IAM - разрешение IAMFullAccess.И когда я делаю это: -
val s3Client = AmazonS3ClientBuilder.standard.withCredentials(new AWSStaticCredentialsProvider(basicSessionCredentials)).withRegion(Regions.US_WEST_2).build
val buckets = s3Client.listBuckets
import scala.collection.JavaConversions._
for (b <- buckets) {
System.out.println("List of buckets names" + b.getName)
}
Я все еще могу перечислить ведра.