Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Contoh kebijakan berdasarkan izin sumber daya
Bagian ini berjalan melalui kasus penggunaan untuk mengendalikan izin pengguna untuk tindakan Elastic Beanstalk yang mengakses sumber Elastic Beanstalk tertentu. Kami akan berjalan melalui contoh kebijakan yang mendukung kasus penggunaan. Untuk kebijakan informasi lebih lanjut tentang sumber Elastic Beanstalk, lihat Membuat kebijakan pengguna kustom. Untuk informasi tentang melampirkan kebijakan untuk pengguna dan grup, buka Mengelola Kebijakan IAM di Menggunakan AWS Identity and Access Management.
Dalam kasus penggunaan kami, Example Corp adalah perusahaan konsultan kecil yang mengembangkan aplikasi untuk dua pelanggan yang berbeda. John adalah manajer pengembangan yang mengawasi pengembangan dua aplikasi Elastic Beanstalk, app1 dan app2. John melakukan pengembangan dan beberapa pengujian pada dua aplikasi, dan hanya dia yang dapat memperbarui lingkungan produksi untuk dua aplikasi. Ini adalah izin yang ia butuhkan untuk app1 dan app2:
-
Melihat aplikasi, versi aplikasi, lingkungan, dan templat konfigurasi
-
Buat versi aplikasi dan men-deploy ke lingkungan pementasan
-
Memperbarui lingkungan produksi
-
Membuat dan mengakhiri lingkungan
Jill adalah tester yang membutuhkan akses untuk melihat sumber daya berikut untuk memantau dan menguji dua aplikasi: aplikasi, versi aplikasi, lingkungan, dan templat konfigurasi. Namun, dia seharusnya tidak bisa membuat perubahan pada sumber Elastic Beanstalk.
Jack adalah developer untuk app1 yang membutuhkan akses untuk melihat semua sumber daya untuk app1 dan juga perlu membuat versi aplikasi untuk app1 dan men-deploy mereka ke lingkungan pementasan.
Judy adalah administrator dari akun AWS untuk Example Corp. Dia telah membuat pengguna IAM untuk John, Jill, dan Jack dan melampirkan kebijakan berikut untuk pengguna untuk memberikan izin yang sesuai untuk aplikasi app1 dan app2.
Contoh 1: John — Manajer pengembangan untuk app1, app2
Kami telah menguraikan kebijakan John menjadi tiga kebijakan terpisah sehingga lebih mudah dibaca dan dikelola. Bersama-sama, mereka memberikan John izin yang dia butuhkan untuk melakukan pengembangan, pengujian, dan tindakan deployment pada dua aplikasi.
Kebijakan pertama menentukan tindakan untuk Auto Scaling, Amazon S3, Amazon EC2,CloudWatch, Amazon SNS, Elastic Load Balancing, Amazon RDS, danAWS CloudFormation. Elastic Beanstalk bergantung pada layanan tambahan ini untuk menyediakan sumber daya yang mendasari saat menciptakan lingkungan.
Perhatikan bahwa kebijakan ini adalah contoh. Ini memberikan satu set yang luas izin untuk produk AWS yang digunakan Elastic Beanstalk untuk mengelola aplikasi dan lingkungan. Misalnya, ec2:*
memungkinkan pengguna IAM untuk melakukan tindakan apa pun pada setiap sumber daya Amazon EC2 di akun AWS. Izin ini tidak terbatas pada sumber daya yang Anda gunakan dengan Elastic Beanstalk. Sebagai praktik terbaik, Anda harus memberi izin kepada individu saja yang mereka butuhkan untuk menjalankan tugasnya.
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"ec2:*",
"ecs:*",
"ecr:*",
"elasticloadbalancing:*",
"autoscaling:*",
"cloudwatch:*",
"s3:*",
"sns:*",
"cloudformation:*",
"dynamodb:*",
"rds:*",
"sqs:*",
"logs:*",
"iam:GetPolicyVersion",
"iam:GetRole",
"iam:PassRole",
"iam:ListRolePolicies",
"iam:ListAttachedRolePolicies",
"iam:ListInstanceProfiles",
"iam:ListRoles",
"iam:ListServerCertificates",
"acm:DescribeCertificate",
"acm:ListCertificates",
"codebuild:CreateProject",
"codebuild:DeleteProject",
"codebuild:BatchGetBuilds",
"codebuild:StartBuild"
],
"Resource":"*"
}
]
}
Kebijakan kedua menentukan tindakan Elastic Beanstalk yang John diperbolehkan untuk melakukan pada sumber daya app1 dan app2. Pernyataan AllCallsInApplications
memungkinkan semua tindakan Elastic Beanstalk ("elasticbeanstalk:*"
) dilakukan pada semua sumber daya dalam app1 dan app2 (misalnya, elasticbeanstalk:CreateEnvironment
). Pernyataan AllCallsOnApplications
memungkinkan semua tindakan Elastic Beanstalk ("elasticbeanstalk:*"
) pada sumber daya aplikasi app1 dan app2 (misalnya, elasticbeanstalk:DescribeApplications
, elasticbeanstalk:UpdateApplication
, dll.). Pernyataan AllCallsOnSolutionStacks
memungkinkan semua tindakan Elastic Beanstalk ("elasticbeanstalk:*"
) untuk sumber daya tumpukan solusi (misalnya, elasticbeanstalk:ListAvailableSolutionStacks
).
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllCallsInApplications",
"Action":[
"elasticbeanstalk:*"
],
"Effect":"Allow",
"Resource":[
"*"
],
"Condition":{
"StringEquals":{
"elasticbeanstalk:InApplication":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
]
}
}
},
{
"Sid":"AllCallsOnApplications",
"Action":[
"elasticbeanstalk:*"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
]
},
{
"Sid":"AllCallsOnSolutionStacks",
"Action":[
"elasticbeanstalk:*"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2::solutionstack/*"
]
}
]
}
Kebijakan ketiga menentukan tindakan Elastic Beanstalk bahwa kebijakan kedua membutuhkan izin untuk menyelesaikan tindakan Elastic Beanstalk. Pernyataan AllNonResourceCalls
memungkinkan tindakan elasticbeanstalk:CheckDNSAvailability
, yang diperlukan untuk memanggil elasticbeanstalk:CreateEnvironment
dan tindakan lainnya. Hal ini juga memungkinkan tindakan elasticbeanstalk:CreateStorageLocation
, yang diperlukan untuk elasticbeanstalk:CreateApplication
, elasticbeanstalk:CreateEnvironment
, dan tindakan lainnya.
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllNonResourceCalls",
"Action":[
"elasticbeanstalk:CheckDNSAvailability",
"elasticbeanstalk:CreateStorageLocation"
],
"Effect":"Allow",
"Resource":[
"*"
]
}
]
}
Contoh 2: Jill — Tester untuk app1, app2
Kami telah menguraikan kebijakan Jill menjadi tiga kebijakan terpisah sehingga lebih mudah untuk membaca dan mengelola. Bersama-sama, mereka memberikan Jill izin yang dia butuhkan untuk melakukan pengujian dan pemantauan tindakan pada dua aplikasi.
Kebijakan pertama menentukanDescribe*
,List*
, danGet*
tindakan pada Auto Scaling, Amazon S3, Amazon EC2,CloudWatch, Amazon SNS, Elastic Load Balancing, Amazon RDS, danAWS CloudFormation(untuk jenis kontainer non-warisan) sehingga tindakan Elastic Beanstalk dapat mengambil informasi yang relevan tentang sumber daya yang mendasari app1 dan app2.
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"ec2:Describe*",
"elasticloadbalancing:Describe*",
"autoscaling:Describe*",
"cloudwatch:Describe*",
"cloudwatch:List*",
"cloudwatch:Get*",
"s3:Get*",
"s3:List*",
"sns:Get*",
"sns:List*",
"rds:Describe*",
"cloudformation:Describe*",
"cloudformation:Get*",
"cloudformation:List*",
"cloudformation:Validate*",
"cloudformation:Estimate*"
],
"Resource":"*"
}
]
}
Kebijakan kedua menentukan tindakan Elastic Beanstalk yang diizinkan untuk dilakukan Jill pada sumber daya app1 dan app2 sumber daya. Pernyataan AllReadCallsInApplications
memungkinkan dia untuk memanggil tindakan Describe*
dan tindakan info lingkungan. Pernyataan AllReadCallsOnApplications
memungkinkan dia untuk memanggil tindakan DescribeApplications
dan DescribeEvents
pada sumber aplikasi app1 dan app2. Pernyataan AllReadCallsOnSolutionStacks
memungkinkan melihat tindakan yang melibatkan solusi tumpukan sumber daya (ListAvailableSolutionStacks
,DescribeConfigurationOptions
, dan ValidateConfigurationSettings
).
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllReadCallsInApplications",
"Action":[
"elasticbeanstalk:Describe*",
"elasticbeanstalk:RequestEnvironmentInfo",
"elasticbeanstalk:RetrieveEnvironmentInfo"
],
"Effect":"Allow",
"Resource":[
"*"
],
"Condition":{
"StringEquals":{
"elasticbeanstalk:InApplication":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
]
}
}
},
{
"Sid":"AllReadCallsOnApplications",
"Action":[
"elasticbeanstalk:DescribeApplications",
"elasticbeanstalk:DescribeEvents"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
]
},
{
"Sid":"AllReadCallsOnSolutionStacks",
"Action":[
"elasticbeanstalk:ListAvailableSolutionStacks",
"elasticbeanstalk:DescribeConfigurationOptions",
"elasticbeanstalk:ValidateConfigurationSettings"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2::solutionstack/*"
]
}
]
}
Kebijakan ketiga menentukan tindakan Elastic Beanstalk bahwa kebijakan kedua membutuhkan izin untuk menyelesaikan tindakan Elastic Beanstalk. Pernyataan AllNonResourceCalls
memungkinkan tindakan elasticbeanstalk:CheckDNSAvailability
, yang diperlukan untuk beberapa tindakan melihat.
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllNonResourceCalls",
"Action":[
"elasticbeanstalk:CheckDNSAvailability"
],
"Effect":"Allow",
"Resource":[
"*"
]
}
]
}
Contoh 3: Jack — Developer untuk app1
Kami telah memecah kebijakan Jack menjadi tiga kebijakan terpisah sehingga lebih mudah untuk membaca dan mengelola. Bersama-sama, mereka memberikan Jack izin yang dia butuhkan untuk melakukan pengujian, pemantauan, dan tindakan deployment pada sumber daya app1.
Kebijakan pertama menentukan tindakan pada Auto Scaling, Amazon S3, Amazon EC2,CloudWatch, Amazon SNS, Elastic Load Balancing, Amazon RDS, danAWS CloudFormation(untuk jenis kontainer non-warisan) sehingga tindakan Elastic Beanstalk dapat melihat dan bekerja dengan sumber daya yang mendasari app1. Untuk daftar jenis kontainer non-warisan yang didukung, lihat Mengapa beberapa versi platform ditandai sebagai legasi?
Perhatikan bahwa kebijakan ini adalah contoh. Ini memberikan satu set yang luas izin untuk produk AWS yang digunakan Elastic Beanstalk untuk mengelola aplikasi dan lingkungan. Misalnya, ec2:*
memungkinkan pengguna IAM untuk melakukan tindakan apa pun pada setiap sumber daya Amazon EC2 di akun AWS. Izin ini tidak terbatas pada sumber daya yang Anda gunakan dengan Elastic Beanstalk. Sebagai praktik terbaik, Anda harus memberi izin kepada individu saja yang mereka butuhkan untuk menjalankan tugasnya.
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"ec2:*",
"elasticloadbalancing:*",
"autoscaling:*",
"cloudwatch:*",
"s3:*",
"sns:*",
"rds:*",
"cloudformation:*"
],
"Resource":"*"
}
]
}
Kebijakan kedua menentukan tindakan Elastic Beanstalk yang Jack diperbolehkan untuk melakukan pada sumber daya app1.
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllReadCallsAndAllVersionCallsInApplications",
"Action":[
"elasticbeanstalk:Describe*",
"elasticbeanstalk:RequestEnvironmentInfo",
"elasticbeanstalk:RetrieveEnvironmentInfo",
"elasticbeanstalk:CreateApplicationVersion",
"elasticbeanstalk:DeleteApplicationVersion",
"elasticbeanstalk:UpdateApplicationVersion"
],
"Effect":"Allow",
"Resource":[
"*"
],
"Condition":{
"StringEquals":{
"elasticbeanstalk:InApplication":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1"
]
}
}
},
{
"Sid":"AllReadCallsOnApplications",
"Action":[
"elasticbeanstalk:DescribeApplications",
"elasticbeanstalk:DescribeEvents"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1"
]
},
{
"Sid":"UpdateEnvironmentInApplications",
"Action":[
"elasticbeanstalk:UpdateEnvironment"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/app1/app1-staging*"
],
"Condition":{
"StringEquals":{
"elasticbeanstalk:InApplication":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1"
]
},
"StringLike":{
"elasticbeanstalk:FromApplicationVersion":[
"arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/app1/*"
]
}
}
},
{
"Sid":"AllReadCallsOnSolutionStacks",
"Action":[
"elasticbeanstalk:ListAvailableSolutionStacks",
"elasticbeanstalk:DescribeConfigurationOptions",
"elasticbeanstalk:ValidateConfigurationSettings"
],
"Effect":"Allow",
"Resource":[
"arn:aws:elasticbeanstalk:us-east-2::solutionstack/*"
]
}
]
}
Kebijakan ketiga menentukan tindakan Elastic Beanstalk bahwa kebijakan kedua membutuhkan izin untuk menyelesaikan tindakan Elastic Beanstalk. Pernyataan AllNonResourceCalls
memungkinkan tindakan elasticbeanstalk:CheckDNSAvailability
, yang diperlukan untuk memanggil elasticbeanstalk:CreateEnvironment
dan tindakan lainnya. Hal ini juga memungkinkan tindakan elasticbeanstalk:CreateStorageLocation
, yang diperlukan untuk elasticbeanstalk:CreateEnvironment
, dan tindakan lainnya.
{
"Version": "2012-10-17",
"Statement":[
{
"Sid":"AllNonResourceCalls",
"Action":[
"elasticbeanstalk:CheckDNSAvailability",
"elasticbeanstalk:CreateStorageLocation"
],
"Effect":"Allow",
"Resource":[
"*"
]
}
]
}