Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Batas izin untuk entitas IAM
AWS mendukung batas izin untuk IAM entitas (pengguna atau peran). Batas izin adalah fitur lanjutan untuk menggunakan kebijakan terkelola guna menetapkan izin maksimum yang dapat diberikan oleh kebijakan berbasis identitas kepada entitas. IAM Batas izin entitas mengizinkannya untuk melakukan hanya tindakan yang diizinkan oleh kebijakan berbasis identitas dan batas izinnya.
Untuk informasi lebih lanjut tentang jenis kebijakan, lihat Jenis kebijakan.
penting
Jangan gunakan pernyataan kebijakan berbasis sumber daya yang menyertakan elemen NotPrincipal
kebijakan dengan Deny
efek bagi IAM pengguna atau peran yang memiliki kebijakan batas izin yang dilampirkan. NotPrincipal
Elemen dengan Deny
efek akan selalu menolak IAM prinsip apa pun yang memiliki kebijakan batas izin yang dilampirkan, terlepas dari nilai yang ditentukan dalam elemen. NotPrincipal
Hal ini menyebabkan beberapa IAM pengguna atau peran yang seharusnya memiliki akses ke sumber daya kehilangan akses. Sebaiknya ubah pernyataan kebijakan berbasis sumber daya Anda untuk menggunakan operator kondisi ArnNotEqualsdengan kunci aws:PrincipalArnkonteks untuk membatasi akses, bukan elemen. NotPrincipal
Untuk informasi tentang NotPrincipal
elemen, lihatAWS JSONelemen kebijakan: NotPrincipal.
Anda dapat menggunakan kebijakan AWS terkelola atau kebijakan yang dikelola pelanggan untuk menetapkan batas IAM entitas (pengguna atau peran). Kebijakan tersebut membatasi izin maksimum bagi pengguna atau peran.
Misalnya, asumsikan bahwa nama IAM pengguna ShirleyRodriguez
harus diizinkan untuk mengelola hanya Amazon S3, Amazon CloudWatch, dan Amazon. EC2 Untuk menegakkan aturan ini, Anda dapat menggunakan kebijakan berikut untuk mengatur batas izin untuk pengguna ShirleyRodriguez
:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*", "cloudwatch:*", "ec2:*" ], "Resource": "*" } ] }
Saat Anda menggunakan kebijakan untuk mengatur batas izin bagi pengguna, itu membatasi izin pengguna tetapi tidak memberikan izin sendiri. Dalam contoh ini, kebijakan menetapkan izin maksimum ShirleyRodriguez
sebagai semua operasi di Amazon S3 CloudWatch, dan Amazon. EC2 Shirley tidak pernah dapat melakukan operasi di layanan lain, termasukIAM, bahkan jika dia memiliki kebijakan izin yang mengizinkannya. Misalnya, Anda dapat menambahkan kebijakan berikut ke pengguna ShirleyRodriguez
:
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "iam:CreateUser", "Resource": "*" } }
Kebijakan ini memungkinkan pembuatan pengguna diIAM. Jika Anda melampirkan kebijakan izin ini ke pengguna ShirleyRodriguez
dan Shirley mencoba membuat sebuah pengguna, operasi gagal. Itu gagal karena batas izin tidak mengizinkan operasi iam:CreateUser
. Mengingat kedua kebijakan ini, Shirley tidak memiliki izin untuk melakukan operasi apa pun di AWS. Anda harus menambahkan kebijakan izin yang berbeda untuk mengizinkan tindakan di layanan lain, seperti Amazon S3. Atau, Anda dapat memperbarui batas izin untuk memungkinkannya membuat pengguna masuk. IAM
Mengevaluasi izin efektif dengan batasan
Batas izin untuk IAM entitas (pengguna atau peran) menetapkan izin maksimum yang dapat dimiliki entitas. Ini dapat mengubah izin efektif bagi pengguna atau peran tersebut. Izin efektif untuk sebuah entitas adalah izin yang diberikan oleh semua kebijakan yang memengaruhi pengguna atau peran. Dalam akun, izin untuk entitas dapat dipengaruhi oleh kebijakan berbasis identitas, kebijakan berbasis sumber daya, batas izin, Organisasi, atau kebijakan sesi. SCPs Untuk informasi selengkapnya tentang berbagai jenis kebijakan, lihat Kebijakan dan izin di AWS Identity and Access Management.
Jika salah satu dari jenis kebijakan ini secara jelas menolak akses untuk suatu operasi, maka permintaan tersebut ditolak. Izin yang diberikan ke suatu entitas oleh beberapa jenis izin jauh lebih rumit. Untuk detail selengkapnya tentang cara AWS mengevaluasi kebijakan, lihatLogika evaluasi kebijakan.
Kebijakan berbasis identitas dengan batasan – Kebijakan berbasis identitas bersifat inline atau kebijakan terkelola yang dilampirkan pada pengguna, grup pengguna, atau peran. Kebijakan berbasis identitas memberikan izin kepada sebuah entitas, dan batasan izin membatasi izin tersebut. Izin yang efektif adalah titik temu dari kedua jenis kebijakan. Penolakan secara tegas dalam salah satu kebijakan ini membatalkan izin.
Kebijakan berbasis sumber daya – Kebijakan berbasis sumber daya mengontrol bagaimana prinsipal tertentu dapat mengakses sumber daya tempat kebijakan tersebut dilampirkan.
- Kebijakan berbasis sumber daya untuk pengguna IAM
-
Dalam akun yang sama, kebijakan berbasis sumber daya yang memberikan izin kepada IAM pengguna ARN (yang bukan sesi pengguna gabungan) tidak dibatasi oleh penolakan implisit dalam kebijakan berbasis identitas atau batas izin.
- Kebijakan berbasis sumber daya untuk peran IAM
-
IAMperan — Kebijakan berbasis sumber daya yang memberikan izin untuk IAM peran ARN dibatasi oleh penolakan implisit dalam batas izin atau kebijakan sesi.
IAMsesi peran — Dalam akun yang sama, kebijakan berbasis sumber daya yang memberikan izin untuk sesi peran memberikan ARN izin langsung ke sesi IAM peran yang diasumsikan. Izin yang diberikan langsung ke sesi tidak dibatasi oleh penolakan implisit dalam kebijakan berbasis identitas, batas izin, atau kebijakan sesi. Ketika Anda mengambil peran dan membuat permintaan, kepala sekolah yang membuat permintaan adalah sesi IAM peran ARN dan bukan peran itu sendiri. ARN
- Kebijakan berbasis sumber daya untuk sesi pengguna federasi IAM
-
IAMsesi pengguna federasi — Sesi pengguna IAM federasi adalah sesi yang dibuat dengan menelepon. GetFederationToken Ketika pengguna federasi membuat permintaan, prinsipal yang membuat permintaan adalah pengguna federasi ARN dan bukan IAM pengguna yang ARN berfederasi. Dalam akun yang sama, kebijakan berbasis sumber daya yang memberikan izin kepada pengguna ARN federasi memberikan izin langsung ke sesi. Izin yang diberikan langsung ke sesi tidak dibatasi oleh penolakan implisit dalam kebijakan berbasis identitas, batas izin, atau kebijakan sesi.
Namun, jika kebijakan berbasis sumber daya memberikan izin kepada pengguna yang melakukan ARN federasi, maka permintaan yang dibuat oleh IAM pengguna federasi selama sesi dibatasi oleh penolakan implisit dalam batas izin atau kebijakan sesi.
Organizations SCPs — SCPs diterapkan untuk keseluruhan Akun AWS. Mereka membatasi izin untuk setiap permintaan yang dibuat oleh prinsipal di dalam akun. IAMEntitas (pengguna atau peran) dapat membuat permintaan yang dipengaruhi olehSCP, batas izin, dan kebijakan berbasis identitas. Dalam hal ini, permintaan hanya diizinkan jika ketiga jenis kebijakan mengizinkannya. Izin yang efektif adalah titik temu dari ketiga jenis kebijakan. Penolakan secara eksplisit dalam salah satu kebijakan ini membatalkan izin.
Anda dapat mempelajari apakah akun Anda adalah anggota organisasi di AWS Organizations. Anggota organisasi mungkin terpengaruh oleh suatuSCP. Untuk melihat data ini menggunakan AWS CLI
perintah atau AWS API operasi, Anda harus memiliki izin untuk organizations:DescribeOrganization
tindakan untuk entitas Organizations Anda. Anda harus memiliki izin tambahan untuk melakukan operasi di konsol Organisasi. Untuk mengetahui SCP apakah menolak akses ke permintaan tertentu, atau untuk mengubah izin efektif Anda, hubungi administrator Anda AWS Organizations .
Kebijakan sesi – Kebijakan sesi adalah kebijakan lanjutan yang Anda berikan sebagai parameter ketika Anda membuat sesi sementara secara programatis untuk peran atau pengguna terfederasi. Izin untuk sesi berasal dari IAM entitas (pengguna atau peran) yang digunakan untuk membuat sesi dan dari kebijakan sesi. Izin kebijakan berbasis identitas milik entitas akan dibatasi oleh kebijakan sesi dan batasan izin. Izin yang efektif untuk set jenis kebijakan ini adalah titik temu dari ketiga jenis kebijakan. Penolakan secara eksplisit dalam salah satu kebijakan ini membatalkan izin. Untuk informasi selengkapnya tentang kebijakan sesi, lihat Kebijakan Sesi
Mendelegasikan tanggung jawab kepada orang lain menggunakan batas izin
Anda dapat menggunakan batas izin untuk mendelegasikan tugas pengelolaan izin, seperti pembuatan pengguna, kepada IAM pengguna di akun Anda. Hal ini mengizinkan orang lain melakukan tugas atas nama Anda dalam batas izin tertentu.
Misalnya, asumsikan bahwa María adalah administrator Akun AWS X-Company. Dia ingin memberikanan tugas pembuatan pengguna ke Zhang. Namun, ia harus memastikan bahwa Zhang membuat pengguna yang mematuhi aturan perusahaan berikut:
-
Pengguna tidak dapat menggunakan IAM untuk membuat atau mengelola pengguna, grup, peran, atau kebijakan.
-
Pengguna ditolak akses ke
logs
bucket Amazon S3 dan tidak dapat mengakses instansi-1234567890abcdef0
AmazonEC2. -
Pengguna tidak dapat menghapus kebijakan batas milik mereka.
Untuk menegakkan aturan ini, María menyelesaikan tugas berikut, yang perinciannya tercantum di bawah ini:
-
María membuat kebijakan terkelola
XCompanyBoundaries
untuk digunakan sebagai batas izin bagi semua pengguna baru dalam akun. -
María membuat kebijakan terkelola
DelegatedUserBoundary
dan menetapkannya sebagai batas izin untuk Zhang. Maria membuat catatan tentang pengguna adminnya ARN dan menggunakannya dalam kebijakan untuk mencegah Zhang mengaksesnya. -
María membuat kebijakan terkelola
DelegatedUserPermissions
dan melampirkannya sebagai kebijakan izin untuk Zhang. -
María memberi tahu Zhang tentang tanggung jawab dan batasan barunya.
Tugas 1: María harus terlebih dahulu membuat kebijakan terkelola untuk menentukan batas bagi pengguna baru. María akan mengizinkan Zhang untuk memberikan kebijakan izin yang dibutuhkan pengguna, tetapi dia ingin pengguna tersebut dibatasi. Untuk melakukan ini, ia membuat kebijakan terkelola pelanggan berikut ini dengan nama XCompanyBoundaries
. Kebijakan ini melakukan hal-hal berikut:
-
Mengizinkan pengguna akses penuh ke beberapa layanan
-
Memungkinkan akses pengelolaan mandiri terbatas di IAM konsol. Ini berarti mereka dapat mengubah kata sandi mereka setelah masuk ke konsol. Mereka tidak dapat mengatur kata sandi awal mereka. Untuk mengijinkan ini, tambahkan tindakan
"*LoginProfile"
ke pernyataanAllowManageOwnPasswordAndAccessKeys
. -
Menolak akses pengguna ke bucket log Amazon S3 atau instans Amazon
i-1234567890abcdef0
EC2
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ServiceBoundaries", "Effect": "Allow", "Action": [ "s3:*", "cloudwatch:*", "ec2:*", "dynamodb:*" ], "Resource": "*" }, { "Sid": "AllowIAMConsoleForCredentials", "Effect": "Allow", "Action": [ "iam:ListUsers", "iam:GetAccountPasswordPolicy" ], "Resource": "*" }, { "Sid": "AllowManageOwnPasswordAndAccessKeys", "Effect": "Allow", "Action": [ "iam:*AccessKey*", "iam:ChangePassword", "iam:GetUser", "iam:*ServiceSpecificCredential*", "iam:*SigningCertificate*" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "DenyS3Logs", "Effect": "Deny", "Action": "s3:*", "Resource": [ "arn:aws:s3:::logs", "arn:aws:s3:::logs/*" ] }, { "Sid": "DenyEC2Production", "Effect": "Deny", "Action": "ec2:*", "Resource": "arn:aws:ec2:*:*:instance/i-1234567890abcdef0" } ] }
Setiap pernyataan memiliki tujuan yang berbeda:
-
ServiceBoundaries
Pernyataan kebijakan ini memungkinkan akses penuh ke AWS layanan yang ditentukan. Artinya jika tindakan pengguna baru dalam layanan ini hanya dibatasi oleh kebijakan izin yang terlampir pada pengguna. -
AllowIAMConsoleForCredentials
Pernyataan ini memungkinkan akses untuk mencantumkan semua IAM pengguna. Akses ini diperlukan untuk menavigasi halaman Pengguna di AWS Management Console. Ini juga mengijinkan untuk melihat persyaratan kata sandi untuk akun, yang diperlukan saat mengubah kata sandi Anda sendiri. -
AllowManageOwnPasswordAndAccessKeys
Pernyataan ini memungkinkan pengguna untuk mengelola hanya kata sandi konsol mereka sendiri dan kunci akses terprogram. Ini penting jika Zhang atau administrator lain memberikan pengguna baru kebijakan izin dengan akses penuh. IAM Dalam kasus ini, pengguna tersebut kemudian dapat mengubah izin miliknya sendiri atau milik pengguna lain. Pernyataan ini mencegah hal tersebut terjadi. -
Pernyataan
DenyS3Logs
secara jelas menolak akses ke bucketlogs
. -
Pernyataan
DenyEC2Production
secara jelas menolak akses ke instansi-1234567890abcdef0
.
Tugas 2: María ingin mengizinkan Zhang untuk membuat semua pengguna Perusahaan X, tetapi hanya dengan batas izin XCompanyBoundaries
. Dia menciptakan kebijakan terkelola pelanggan berikut bernama DelegatedUserBoundary
. Kebijakan ini menentukan izin maksimum yang dapat dimiliki Zhang.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateOrChangeOnlyWithBoundary", "Effect": "Allow", "Action": [ "iam:AttachUserPolicy", "iam:CreateUser", "iam:DeleteUserPolicy", "iam:DetachUserPolicy", "iam:PutUserPermissionsBoundary", "iam:PutUserPolicy" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PermissionsBoundary": "arn:aws:iam::123456789012:policy/XCompanyBoundaries" } } }, { "Sid": "CloudWatchAndOtherIAMTasks", "Effect": "Allow", "Action": [ "cloudwatch:*", "iam:CreateAccessKey", "iam:CreateGroup", "iam:CreateLoginProfile", "iam:CreatePolicy", "iam:DeleteGroup", "iam:DeletePolicy", "iam:DeletePolicyVersion", "iam:DeleteUser", "iam:GetAccountPasswordPolicy", "iam:GetGroup", "iam:GetLoginProfile", "iam:GetPolicy", "iam:GetPolicyVersion", "iam:GetRolePolicy", "iam:GetUser", "iam:GetUserPolicy", "iam:ListAccessKeys", "iam:ListAttachedRolePolicies", "iam:ListAttachedUserPolicies", "iam:ListEntitiesForPolicy", "iam:ListGroups", "iam:ListGroupsForUser", "iam:ListMFADevices", "iam:ListPolicies", "iam:ListPolicyVersions", "iam:ListRolePolicies", "iam:ListSSHPublicKeys", "iam:ListServiceSpecificCredentials", "iam:ListSigningCertificates", "iam:ListUserPolicies", "iam:ListUsers", "iam:SetDefaultPolicyVersion", "iam:SimulateCustomPolicy", "iam:SimulatePrincipalPolicy", "iam:UpdateGroup", "iam:UpdateLoginProfile", "iam:UpdateUser" ], "NotResource": "arn:aws:iam::123456789012:user/Maria" }, { "Sid": "NoBoundaryPolicyEdit", "Effect": "Deny", "Action": [ "iam:CreatePolicyVersion", "iam:DeletePolicy", "iam:DeletePolicyVersion", "iam:SetDefaultPolicyVersion" ], "Resource": [ "arn:aws:iam::123456789012:policy/XCompanyBoundaries", "arn:aws:iam::123456789012:policy/DelegatedUserBoundary" ] }, { "Sid": "NoBoundaryUserDelete", "Effect": "Deny", "Action": "iam:DeleteUserPermissionsBoundary", "Resource": "*" } ] }
Setiap pernyataan memiliki tujuan yang berbeda:
-
CreateOrChangeOnlyWithBoundary
Pernyataan tersebut memungkinkan Zhang untuk membuat IAM pengguna tetapi hanya jika dia menggunakanXCompanyBoundaries
kebijakan untuk menetapkan batas izin. Pernyataan ini juga mengizinkannya untuk menetapkan batas izin bagi pengguna yang ada tetapi hanya menggunakan kebijakan yang sama. Terakhir, pernyataan ini memungkinkan Zhang untuk mengelola kebijakan izin bagi pengguna dengan set batas izin ini. -
Pernyataan
CloudWatchAndOtherIAMTasks
mengizinkan Zhang untuk menyelesaikan tugas pengguna, grup, dan kebijakan lainnya. Dia memiliki izin untuk mengatur ulang kata sandi dan membuat kunci akses untuk setiap IAM pengguna yang tidak tercantum dalam elemenNotResource
kebijakan. Ini memungkinkannya untuk membantu pengguna dengan masalah masuk. -
Pernyataan
NoBoundaryPolicyEdit
menolak akses Zhang untuk memperbarui kebijakanXCompanyBoundaries
. Dia tidak diperbolehkan mengubah kebijakan apa pun yang digunakan untuk menetapkan batas izin bagi dirinya sendiri atau pengguna lain. -
Pernyataan
NoBoundaryUserDelete
menolak akses Zhang untuk menghapus batas izin bagi dirinya sendiri atau pengguna lain.
Kemudian María menetapkan kebijakan DelegatedUserBoundary
sebagai batas izin untuk pengguna Zhang
.
Tugas 3: Karena batas izin membatasi izin maksimum, tetapi tidak memberikan akses sendiri, Maria harus membuat kebijakan izin untuk Zhang. Dia menciptakan kebijakan berikut bernama DelegatedUserPermissions
. Kebijakan ini menetapkan operasi yang dapat dilakukan Zhang, dalam batas izin yang ditentukan.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAM", "Effect": "Allow", "Action": "iam:*", "Resource": "*" }, { "Sid": "CloudWatchLimited", "Effect": "Allow", "Action": [ "cloudwatch:GetDashboard", "cloudwatch:GetMetricData", "cloudwatch:ListDashboards", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics" ], "Resource": "*" }, { "Sid": "S3BucketContents", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::ZhangBucket" } ] }
Setiap pernyataan memiliki tujuan yang berbeda:
-
IAM
Pernyataan kebijakan memungkinkan Zhang akses penuh keIAM. Namun, karena batas izinnya hanya memungkinkan beberapa IAM operasi, IAM izin efektifnya hanya dibatasi oleh batas izinnya. -
CloudWatchLimited
Pernyataan itu memungkinkan Zhang untuk melakukan lima tindakan. CloudWatch Batas izinnya memungkinkan semua tindakan masuk CloudWatch, sehingga CloudWatch izin efektifnya hanya dibatasi oleh kebijakan izinnya. -
Pernyataan
S3BucketContents
mengizinkan Zhang membuat daftar Amazon S3 bucketZhangBucket
. Namun, batas izinnya tidak mengizinkan tindakan Amazon S3 apapun, sehingga dia tidak dapat melakukan operasi S3 apapun, terlepas dari kebijakan perizinannya.catatan
Kebijakan Zhang mengizinkannya untuk membuat pengguna yang kemudian dapat mengakses sumber daya Amazon S3 yang tidak dapat diaksesnya. Dengan menyerahkan tindakan administratif ini, Maria secara efektif memercayai Zhang dengan akses ke Amazon S3
Kemudian María menetapkan kebijakan DelegatedUserPermissions
sebagai kebijakan izin untuk pengguna Zhang
.
Tugas 4: Dia memberikan Zhang instruksi untuk membuat pengguna baru. Dia mengatakan padanya bahwa dia dapat membuat pengguna baru dengan izin apapun yang mereka butuhkan, tetapi ia harus menetapkan untuknya kebijakan XCompanyBoundaries
sebagai batas izin.
Zhang menyelesaikan tugas berikut:
-
Zhang menciptakan pengguna dengan. AWS Management Console Dia mengetik nama pengguna
Nikhil
dan mengaktifkan akses konsol untuk pengguna. Dia membersihkan kotak centang di sebelah Memerlukan pengaturan ulang kata sandi, karena kebijakan di atas memungkinkan pengguna untuk mengubah kata sandi mereka hanya setelah mereka masuk ke konsol. IAM -
Pada halaman Setel izin, Zhang memilih kebijakan ReadOnlyAccess izin IAMFullAccessdan AmazonS3 yang memungkinkan Nikhil melakukan pekerjaannya.
-
Zhang melewatkan bagian Atur batasan izin, melupakan instruksi María.
-
Zhang meninjau detail pengguna dan memilih Buat pengguna.
Operasi gagal dan akses ditolak. Batas izin Zhang
DelegatedUserBoundary
mengharuskan setiap pengguna yang dia buat memiliki kebijakanXCompanyBoundaries
yang digunakan sebagai batas izin. -
Zhang kembali ke halaman sebelumnya. Di bagian Atur batasan izin, ia memilih kebijakan
XCompanyBoundaries
. -
Zhang meninjau detail pengguna dan memilih Buat pengguna.
Pengguna dibuat.
Ketika Nikhil masuk, ia memiliki akses ke IAM dan Amazon S3, kecuali operasi yang ditolak oleh batas izin. Misalnya, dia dapat mengubah kata sandinya sendiri IAM tetapi tidak dapat membuat pengguna lain atau mengedit kebijakannya. Nikhil memiliki akses hanya baca ke Amazon S3
Jika seseorang menambahkan kebijakan berbasis sumber daya ke bucket logs
yang mengizinkan Nikhil memasukkan sebuah objek ke dalam bucket, dia tetap tidak dapat mengakses bucket. Alasannya adalah bahwa tindakan apa pun di bucket logs
secara jelas ditolak oleh batas izinnya. Penolakan secara jelas dalam jenis kebijakan apa pun menyebabkan permintaan ditolak. Namun, jika kebijakan berbasis sumber daya yang terlampir pada rahasia Secrets Manager memungkinkan Nikhil untuk melakukan tindakan secretsmanager:GetSecretValue
, lalu Nikhil dapat mengambil dan mendekripsi rahasia. Alasannya adalah bahwa operasi Secrets Manager tidak secara jelas ditolak oleh batas izinnya, dan penolakan implisit dalam batas izin tidak membatasi kebijakan berbasis sumber daya.