Atasi kesalahan izin yang terjadi ketika Pengguna RAM atau Peran RAM mengakses Alibaba Cloud. Topik ini mencakup kesalahan akses ditolak—di mana identitas telah teridentifikasi tetapi tidak memiliki izin yang diperlukan—serta kegagalan autentikasi HTTP 401, di mana sistem tidak dapat mengenali identitas saat ini.
Deskripsi masalah
Secara default, identitas RAM seperti Pengguna RAM dan Peran RAM tidak memiliki izin untuk tindakan apa pun. Mereka hanya dapat mengakses sumber daya cloud tertentu setelah izin diberikan secara eksplisit. Ketika identitas RAM melakukan suatu tindakan pada sumber daya Alibaba Cloud, kesalahan akses ditolak akan muncul dalam salah satu kasus berikut:
Implicit deny: Tidak ada kebijakan yang mengizinkan tindakan tersebut.
Explicit deny: Suatu kebijakan secara eksplisit menolak tindakan tersebut dalam pernyataan Deny.
Kesalahan tersebut meliputi:
Kesalahan akses konsol: Pesan
permission deniedditampilkan.Kesalahan panggilan API: Kode kesalahan seperti
NoPermission,Forbidden.RAM,User.NoPermission, atauNotAuthorizeddikembalikan.
Kesalahan HTTP 401 seperti InvalidAccessKeyId.NotFound berbeda dari kesalahan di atas. Kesalahan 401 menunjukkan kegagalan autentikasi, artinya sistem tidak dapat mengenali identitas saat ini. Sebaliknya, kesalahan akses ditolak menunjukkan kegagalan otorisasi, yaitu identitas telah dikenali tetapi tidak memiliki izin untuk melakukan tindakan tersebut. Untuk kesalahan 401, lihat Kegagalan autentikasi HTTP 401.
Beberapa Produk Alibaba Cloud tidak mendukung otorisasi berbasis RAM. Keterbatasan ini memengaruhi troubleshooting sebagai berikut:
Akses resource: Jika identitas RAM menerima kesalahan akses ditolak untuk produk semacam itu, identitas RAM tidak dapat mengakses resource produk tersebut.
Diagnosis izin: Untuk produk semacam itu, fitur diagnosis izin tidak dapat memberikan hasil troubleshooting.
Panggilan API: Jika operasi API mengembalikan kesalahan
Forbidden.RAM, periksa juga apakah API produk target mendukung otorisasi berbasis RAM. Beberapa API produk tidak mendukung otorisasi berbasis RAM dan tidak dapat dipanggil oleh identitas RAM.Kebijakan sistem: Tabel kebijakan sistem dalam Memberikan izin produk cloud kepada Pengguna RAM hanya berlaku untuk produk yang mendukung otorisasi berbasis RAM.
Solusi
Tabel berikut membantu Anda menemukan bagian yang tepat berdasarkan pengamatan Anda.
| Yang Anda amati | Tempat mencari |
| Pesan pop-up akses ditolak di konsol | Diagnosis kesalahan akses ditolak dan Akses konsol |
Tanggapan kesalahan dari panggilan SDK, CLI, atau OpenAPI Developer Portal, dengan bidang AccessDeniedDetail | Diagnosis kesalahan akses ditolak dan Panggilan API |
| Pengguna RAM memerlukan izin untuk mengoperasikan produk cloud seperti ECS, OSS, atau RDS | Memberikan izin produk cloud kepada Pengguna RAM |
| Kesalahan akses ditolak saat Anda mengekspor daftar instans di Konsol ECS | Izin tidak mencukupi saat mengekspor daftar instans di Konsol ECS |
Kesalahan HTTP 401 seperti InvalidAccessKeyId.NotFound | Kegagalan autentikasi HTTP 401 |
Diagnosis kesalahan akses ditolak
Baik pesan pop-up akses ditolak di konsol maupun bidang AccessDeniedDetail dalam tanggapan kesalahan API menyediakan detail kesalahan. Gunakan detail ini untuk mengidentifikasi penyebab kesalahan akses ditolak dan cara mengatasinya.
Identifikasi identitas operator.
Bidang auth subject dalam pop-up konsol menyediakan detail identitas operator. Dalam tanggapan kesalahan API, bidang yang sesuai berada di
AccessDeniedDetail.Identity Type (AuthPrincipalType dalam tanggapan API): jenis identitas operator, yaitu Pengguna RAM, Peran RAM, atau identitas federasi. Dalam tanggapan API, SubUser menunjukkan Pengguna RAM, AssumedRoleUser menunjukkan Peran RAM, dan Federated menunjukkan identitas federasi.
Identity Information (AuthPrincipalDisplayName dalam tanggapan API): pengenal identitas. Pengguna RAM menyediakan UID. Peran RAM menyediakan nama peran dan nama sesi peran, misalnya,
RoleName:RoleSessionName. Identitas federasi menyediakan jenis dan nama penyedia identitas, misalnya,saml-provider/AzureAD.Account ID (AuthPrincipalOwnerId dalam tanggapan API): UID Akun Alibaba Cloud tempat identitas tersebut bernaung.
Identifikasi izin yang hilang.
Bidang Action (AuthAction dalam tanggapan API) menunjukkan tindakan spesifik yang menyebabkan kesalahan akses ditolak. Anda dapat menggunakan tindakan ini untuk troubleshooting atau memberikan izin.
Periksa juga apakah tindakan tersebut melibatkan dependensi lintas produk saat Anda melakukan troubleshooting kesalahan akses ditolak. Beberapa tindakan konsol memanggil API produk cloud lain di lapisan dasar. Dependensi semacam itu tidak dapat disimpulkan dari nama produk tempat entri tindakan berada. Gunakan authorization action dalam detail kesalahan, misalnya,
oos:StartExecution, untuk menentukan izin yang sebenarnya hilang.Identifikasi jenis kebijakan yang memengaruhi izin.
Bidang Policy Type (PolicyType dalam tanggapan API) menunjukkan jenis kebijakan yang menyebabkan kesalahan akses ditolak, termasuk kebijakan kontrol, kebijakan sesi, kebijakan kepercayaan, kebijakan berbasis identitas di tingkat akun, dan kebijakan berbasis identitas di tingkat kelompok sumber daya. Untuk informasi lebih lanjut, lihat Proses evaluasi kebijakan.
Jenis kebijakan menentukan cara Anda menyesuaikan kebijakan:
Jika tindakan ditolak oleh control policy (ControlPolicy), hubungi akun manajemen direktori sumber daya Anda untuk memberikan izin. Kebijakan kontrol menetapkan batas izin untuk akun anggota dalam direktori sumber daya dan memiliki prioritas lebih tinggi daripada keputusan izin dalam suatu akun.
Jika tindakan ditolak oleh session policy (SessionPolicy), hubungi administrator akun Anda untuk memeriksa kebijakan sesi yang dilampirkan pada panggilan AssumeRole.
Jika tindakan ditolak oleh trust policy (AssumeRolePolicy), hubungi administrator akun Anda untuk memeriksa kebijakan kepercayaan dari Peran RAM yang diasumsikan.
Jika tindakan ditolak oleh identity-based policy (AccountLevelIdentityBasedPolicy atau ResourceGroupLevelIdentityBasedPolicy), hubungi administrator akun Anda untuk memeriksa kebijakan berbasis identitas yang diberikan kepada identitas operator.
Tentukan apakah kesalahan akses ditolak disebabkan oleh implicit deny atau explicit deny.
Implicit deny: Penyebab kesalahan menunjukkan bahwa tindakan tidak diotorisasi, dan bidang Denied Type menampilkan
insufficient permissions. Bidang NoPermissionType dalam tanggapan API menampilkanImplicitDeny. Dalam kasus ini, administrator akun Anda harus memberikan izin kepada Anda untuk melakukan tindakan tersebut dengan menambahkan Action ke pernyataan Allow.Explicit deny: Penyebab kesalahan menunjukkan bahwa tindakan secara eksplisit ditolak, dan bidang Denied Type menampilkan
Jika jenis kebijakan adalah kebijakan kontrol, penolakan eksplisit juga dikembalikan ketika tindakan otorisasi tidak termasuk dalam pernyataan Allow.explicit deny. Bidang NoPermissionType dalam tanggapan API menampilkanExplicitDeny. Dalam kasus ini, administrator akun Anda harus meninjau izin yang diberikan dan memeriksa apakah pernyataan Deny mencakup Action.
Setelah Anda menyesuaikan izin, ulangi operasi yang gagal. Kesalahan akses ditolak seharusnya tidak muncul lagi. Jika kesalahan tetap terjadi, periksa apakah produk target mendukung otorisasi berbasis RAM dan tinjau kembali jenis kebijakan.
Fitur diagnosis izin adalah alat diagnostik pasca-kejadian. Anda harus terlebih dahulu melakukan panggilan API dan memicu penolakan, lalu menggunakan pesan diagnostik (EncodedDiagnosticMessage) atau RequestId untuk melacak alasan penolakan secara terbalik. Kedua nilai tersebut berasal dari tanggapan panggilan API yang ditolak. Fitur ini tidak mendukung simulasi izin efektif identitas RAM dalam kelompok sumber daya tanpa panggilan nyata. Untuk memeriksa izin sebelumnya, gunakan salah satu metode berikut:
Untuk mengaudit izin yang ada pada identitas RAM Anda dan mengidentifikasi hak istimewa berlebihan, gunakan fitur Access Analysis untuk membuat alat analisis.
Untuk memverifikasi apakah izin sudah cukup sebelum satu panggilan, tambahkan parameter
DryRunke panggilan API.
Akses konsol
Sebagian besar pesan pop-up akses ditolak di konsol menyediakan detail kesalahan tambahan selain penyebab kesalahan. Baca detail kesalahan dan ikuti langkah-langkah dalam Diagnosis kesalahan akses ditolak untuk mengidentifikasi penyebab dan cara mengatasinya. Jika pop-up tidak menampilkan detail kesalahan, ulangi operasi yang sama dengan memanggil operasi API menggunakan SDK atau CLI untuk mendapatkan AccessDeniedDetail, atau gunakan RequestId dari panggilan yang ditolak untuk melacak alasan penolakan di halaman diagnosis izin RAM.
Selain itu, untuk produk yang mendukung diagnosis izin, Anda dapat mengklik Troubleshooting dalam pop-up kesalahan untuk langsung melihat penyebab kesalahan dan solusinya.
Bagian Solution dalam pop-up diagnosis izin merekomendasikan kebijakan sistem yang dapat Anda lampirkan, seperti AliyunRAMFullAccess dan AliyunRAMReadOnlyAccess, serta menyediakan tindakan cepat seperti View Authorization, Create Policy, dan Add permission.
Panggilan API
Saat Anda memanggil operasi API secara langsung menggunakan kit pengembangan perangkat lunak (SDK) Alibaba Cloud, antarmuka baris perintah (CLI), atau OpenAPI Developer Portal, tanggapan kesalahan menyediakan informasi kesalahan terperinci. Contoh berikut menunjukkan tanggapan kesalahan yang dikembalikan selama debugging di OpenAPI Developer Portal.
{
"RequestId": "1090E608-D26F-5A08-BAE3-80D350E9FE20",
"HostId": "ram.aliyuncs.com",
"Code": "NoPermission",
"Message": "You are not authorized to do this action. resource: acs:ram:*:xxx:user/* Action: ram:ListUsers",
"Recommend": "https://next.api.alibabacloud.com/troubleshoot?q=NoPermission&product=Ram",
"AccessDeniedDetail": {
"PolicyType": "AccountLevelIdentityBasedPolicy",
"AuthPrincipalOwnerId": "xxx",
"EncodedDiagnosticMessage": "AQIBIAAAAMDAbkn...jHF4TLvjT8hp17I0RFKObkV4=",
"AuthPrincipalType": "SubUser",
"AuthPrincipalDisplayName": "xxx",
"NoPermissionType": "ExplicitDeny",
"AuthAction": "ram:ListUsers"
}
}Bidang AccessDeniedDetail dalam tanggapan kesalahan menunjukkan detail kesalahan akses ditolak. Ikuti langkah-langkah dalam Diagnosis kesalahan akses ditolak untuk mengidentifikasi penyebab kesalahan dan cara mengatasinya.
Selain itu, untuk produk yang mendukung diagnosis izin, Anda dapat memberikan seluruh isi bidang EncodedDiagnosticMessage kepada administrator akun Anda. Administrator akun kemudian dapat membuka halaman diagnosis izin RAM, memasukkan nilai lengkap EncodedDiagnosticMessage, dan melihat penyebab kesalahan serta solusi yang telah didekodekan. Hasil dekode menyediakan informasi yang sama dengan pop-up diagnosis izin di konsol. Administrator akun harus memiliki izin ram:DecodeDiagnosticMessage.
Skenario umum
Memberikan izin produk cloud kepada Pengguna RAM
Saat Pengguna RAM mengoperasikan produk cloud seperti ECS, OSS, atau RDS, konsol menampilkan permission denied atau panggilan API mengembalikan kesalahan Forbidden.RAM. Hal ini biasanya terjadi karena Pengguna RAM belum diberikan izin untuk mengoperasikan produk cloud yang sesuai.
Selesaikan prosedur ini menggunakan Akun Alibaba Cloud tempat Pengguna RAM tersebut bernaung. Jika Anda adalah Pengguna RAM yang menerima kesalahan, kirimkan prosedur ini kepada administrator akun Anda.
Masuk ke Konsol RAM dengan Akun Alibaba Cloud Anda.
Di panel navigasi kiri, pilih Identities > Users.
Dalam daftar pengguna, temukan Pengguna RAM target dan klik nama login pengguna tersebut.
Klik tab Permissions, lalu klik Grant Permission.
Di kotak pencarian kebijakan, masukkan nama produk cloud target, seperti
ECS. Pilih kebijakan sistem yang sesuai dan konfirmasi otorisasi.
Tabel berikut mencantumkan produk cloud umum dan kebijakan sistem yang sesuai.
| Produk cloud | Kebijakan akses penuh | Kebijakan akses read-only |
| Elastic Compute Service (ECS) | AliyunECSFullAccess | AliyunECSReadOnlyAccess |
| Object Storage Service (OSS) | AliyunOSSFullAccess | AliyunOSSReadOnlyAccess |
| ApsaraDB RDS | AliyunRDSFullAccess | AliyunRDSReadOnlyAccess |
| Virtual Private Cloud (VPC) | AliyunVPCFullAccess | AliyunVPCReadOnlyAccess |
| Server Load Balancer (SLB) | AliyunSLBFullAccess | AliyunSLBReadOnlyAccess |
Untuk informasi lebih lanjut tentang kebijakan sistem, lihat Mengelola izin untuk Pengguna RAM.
Kebijakan sistem dalam tabel di atas hanya berlaku untuk produk yang mendukung otorisasi berbasis RAM. Jika kesalahan akses ditolak tetap terjadi setelah Anda memberikan izin, periksa dokumentasi produk yang sesuai untuk memastikan apakah produk tersebut mendukung otorisasi berbasis RAM.
Izin tidak mencukupi saat mengekspor daftar instans di Konsol ECS
Gejala
Pengguna RAM diberikan kebijakan sistem ReadOnlyAccess. Setelah Pengguna RAM mengklik Export Instance List di Konsol ECS, kesalahan akses ditolak tetap ditampilkan, atau kesalahan User.NoPermission dikembalikan. Dalam detail kesalahan, authorization action adalah oos:StartExecution dan permission decision adalah insufficient permissions.
Penyebab
Fitur ekspor daftar instans di Konsol ECS menggunakan CloudOps Orchestration Service (OOS) untuk manajemen operasi dan menjalankan tugas ekspor secara asinkron, sehingga tindakan ini memerlukan izin oos:StartExecution. ReadOnlyAccess hanya mencakup izin kueri read-only pada resource produk cloud dan tidak mencakup izin eksekusi CloudOps Orchestration Service. Oleh karena itu, Pengguna RAM yang hanya diberikan izin read-only tidak dapat memicu ekspor.
Solusi
Lampirkan kebijakan sistem AliyunOOSFullAccess ke Pengguna RAM, atau buat kebijakan kustom yang memberikan izin oos:StartExecution. Kemudian, ekspor daftar instans lagi. Skenario ini merupakan contoh dependensi lintas produk yang dijelaskan dalam Diagnosis kesalahan akses ditolak: izin yang hilang termasuk dalam OOS, bukan ECS.
Kegagalan autentikasi HTTP 401
Jika Anda menerima kesalahan HTTP 401 seperti InvalidAccessKeyId.NotFound saat memanggil operasi API atau mengakses konsol, autentikasi gagal. Kesalahan HTTP 401 menunjukkan kegagalan autentikasi, artinya sistem tidak dapat mengenali identitas saat ini. Tangani kesalahan ini secara terpisah dari kesalahan akses ditolak, yang menunjukkan kegagalan otorisasi: identitas telah dikenali tetapi tidak memiliki izin untuk melakukan tindakan tersebut. Saat Anda mengalami kesalahan 401, lakukan troubleshooting dengan mengikuti langkah-langkah berikut.
Periksa apakah Pasangan Kunci Akses valid.
Masuk ke Konsol RAM dan lihat daftar AccessKey. Jika Pasangan Kunci Akses dihapus, buat Pasangan Kunci Akses baru. Jika Pasangan Kunci Akses berada dalam status Inactive, panggilan API tidak terpengaruh. Hanya login konsol yang terpengaruh.
Periksa status Pengguna RAM.
Pastikan bahwa Pengguna RAM berada dalam status Active. Jika Pengguna RAM berada dalam status Inactive, aktifkan terlebih dahulu Pengguna RAM tersebut.
Periksa periode validitas token Security Token Service (token STS).
Jika Anda menggunakan kredensial temporary STS untuk panggilan, kredensial yang kedaluwarsa menyebabkan kegagalan autentikasi. Panggil operasi AssumeRole lagi untuk mendapatkan token STS baru.