All Products
Search
Document Center

ApsaraMQ for RocketMQ:Kebijakan kustom untuk ApsaraMQ for RocketMQ

Last Updated:Jul 10, 2026

Kebijakan Resource Access Management (RAM) mengontrol siapa yang dapat mengakses resource ApsaraMQ for RocketMQ Anda dan tindakan apa saja yang dapat mereka lakukan. Jika kebijakan sistem bawaan terlalu luas untuk kebutuhan Anda, buat kebijakan kustom untuk menerapkan prinsip least-privilege access.

Kapan menggunakan kebijakan kustom

Kebijakan sistem menyediakan kumpulan izin yang telah ditentukan sebelumnya. Gunakan kebijakan kustom ketika Anda perlu:

  • Membatasi akses ke instans, topik, atau kelompok konsumen tertentu

  • Hanya mengizinkan tindakan tertentu, seperti membuat instans atau menghapus topik

  • Menggabungkan beberapa cakupan izin dalam satu kebijakan

Cara kerja kebijakan kustom

Setelah membuat kebijakan kustom, sambungkan ke pengguna RAM, grup pengguna RAM, atau peran RAM untuk memberikan izin yang ditentukan.

Perhatikan aturan berikut:

  • Lepaskan sebelum menghapus. Anda dapat menghapus kebijakan yang tidak disambungkan ke entitas mana pun. Jika kebijakan tersebut sedang disambungkan ke suatu entitas, lepaskan terlebih dahulu.

  • Gunakan pengendalian versi. Kebijakan kustom mendukung versioning. Anda dapat mengelola versi kebijakan kustom berdasarkan mekanisme manajemen versi yang disediakan oleh RAM.

Format ARN resource

Setiap bidang Resource dalam kebijakan menggunakan Alibaba Cloud Resource Name (ARN) untuk mengidentifikasi target. Format ARN untuk ApsaraMQ for RocketMQ adalah:

acs:rocketmq:{regionId}:{accountId}:instance/{InstanceId}/topic/{TopicName}
SegmenDeskripsi
{regionId}Wilayah tempat instans berada. Lihat Endpoints.
{accountId}ID akun Alibaba Cloud Anda.
{InstanceId}ID instans ApsaraMQ for RocketMQ.
{TopicName}Nama topik.
{ConsumerGroupId}ID kelompok konsumen.

Gunakan wildcard untuk memperluas cakupan:

PolaCakupan
instance/*Semua instans di bawah akun dalam wilayah yang ditentukan
instance/{InstanceId}*Instans tertentu dan semua resource turunannya (topik, kelompok konsumen)
*:{#accountId}:*/*Semua resource di bawah akun di seluruh wilayah

Contoh kebijakan

Penting

Ganti nilai placeholder pada contoh berikut dengan identifier resource aktual Anda sebelum menerapkan kebijakan.

Berikan akses penuh ke instans tertentu

Kebijakan ini memberikan semua izin ApsaraMQ for RocketMQ pada satu instans dan resource turunannya. Kebijakan ini mencakup tiga pernyataan karena cakupan resource yang berbeda diperlukan untuk menampilkan daftar instans, mengoperasikan instans tertentu, dan melakukan kueri diagnostik.

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "rocketmq:ListInstances"
            ],
            "Resource": [
                "acs:rocketmq:{regionId}:{accountId}:instance/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "rocketmq:*"
            ],
            "Resource": [
                "acs:rocketmq:{regionId}:{accountId}:instance/{InstanceId}*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "rocketmq:ListAnalyticsQuery"
            ],
            "Resource": [
                "acs:rocketmq:*:{#accountId}:*/*"
            ]
        }
    ]
}

Ketiga pernyataan tersebut memiliki tujuan berbeda:

  1. Daftar instansrocketmq:ListInstances pada semua instans (instance/*) memungkinkan pengguna menjelajahi dan menemukan instans target di Konsol.

  2. Akses penuh ke instansrocketmq:* pada instans tertentu (instance/{InstanceId}*). Wildcard di akhir mencakup semua resource turunan.

  3. Akses diagnostikrocketmq:ListAnalyticsQuery mengaktifkan kueri diagnostik. Wilayah wildcard (*) memungkinkan kueri lintas wilayah.

Berikan izin untuk membuat instans

Kebijakan ini memungkinkan pengguna RAM membuat instans ApsaraMQ for RocketMQ di wilayah tertentu. Resource menggunakan instance/* karena ID instans belum diketahui saat pembuatan.

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "rocketmq:CreateInstance"
            ],
            "Resource": [
                "acs:rocketmq:{regionId}:{accountId}:instance/*"
            ]
        }
    ]
}

Berikan izin untuk menghapus topik tertentu

Kebijakan ini membatasi tindakan DeleteTopic hanya pada satu topik di instans tertentu. Gunakan pola ini untuk mendelegasikan pembersihan topik tanpa memberikan izin yang lebih luas.

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "rocketmq:DeleteTopic"
            ],
            "Resource": [
                "acs:rocketmq:{regionId}:{accountId}:instance/{InstanceId}/topic/{TopicName}"
            ]
        }
    ]
}

Berikan akses penuh ke diagnostik instans

Kebijakan ini memberikan semua izin terkait diagnostik: mengirimkan, menampilkan daftar, dan mengambil kueri analitik. Pola wilayah dan resource wildcard memungkinkan akses diagnostik ke semua instans dan wilayah di bawah akun.

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "rocketmq:GetAnalyticsQuery",
                "rocketmq:SubmitAnalyticsQuery",
                "rocketmq:ListAnalyticsQuery"
            ],
            "Resource": [
                "acs:rocketmq:*:{#accountId}:*/*"
            ]
        }
    ]
}

Berikan izin kepada pengguna RAM untuk melihat daftar instans dan mengoperasikan instans tertentu

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "rocketmq:ListInstances",
                "rocketmq:GetUserTags"
            ],
            "Resource": [
                "acs:rocketmq:*:*:instance/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "rocketmq:*"
            ],
            "Resource": [
                "acs:rocketmq:{regionId}:{accountId}:instance/{InstanceId}*"
            ]
        }
    ]
}
Catatan

Contoh ini menggambarkan perbedaan konfigurasi Resource antara tindakan bertipe daftar dan tindakan spesifik instans:

  • Tindakan bertipe daftar (misalnya, rocketmq:ListInstances dan rocketmq:GetUserTags): Bidang Resource harus menggunakan format wildcard acs:rocketmq:*:*:instance/*. Anda tidak dapat membatasi Resource ke ARN instans tertentu untuk tindakan bertipe daftar. Jika dilakukan, tindakan tersebut akan gagal.

  • Tindakan baca/tulis instans (misalnya, rocketmq:*): Anda dapat membatasi Resource ke ARN instans tertentu, seperti acs:rocketmq:{regionId}:{accountId}:instance/{InstanceId}*.

Jika Anda hanya memberikan izin kepada pengguna RAM untuk instans tertentu tanpa menyertakan izin tindakan bertipe daftar, pengguna RAM tersebut akan menerima error NoPermission atau tidak dapat menampilkan daftar instans di Konsol maupun saat memanggil API.

Langkah berikutnya

FAQ

T: Mengapa saya menerima error "valid resource owner failed" atau "AccessDenied (OwnerId forbidden)" saat mengakses ApsaraMQ for RocketMQ melalui HTTP?

Penyebab: Error ini biasanya terjadi karena salah satu alasan berikut:

  • Error konstruksi signature: Signature permintaan HTTP tidak sesuai dengan spesifikasi HMAC-SHA256 V4. Masalah umum termasuk Canonical String yang dibangun secara salah atau header Authorization yang tidak valid.

  • Ketidakcocokan resource dalam kebijakan RAM: Bidang Resource dalam kebijakan RAM Anda tidak persis sesuai dengan topik atau instans target. Nama topik di ApsaraMQ for RocketMQ bersifat sensitif terhadap huruf besar/kecil (case-sensitive). Format Resource yang benar untuk publikasi pesan protokol HTTP adalah acs:mq:*:*:instance/{InstanceId}/topic/{TopicName}.

  • Izin tidak mencukupi: Pasangan Kunci Akses atau kredensial STS yang digunakan untuk permintaan tidak memiliki izin yang diperlukan, seperti mq:PUB untuk mempublikasikan pesan.

Resolusi:

  1. Verifikasi bahwa signature permintaan HTTP Anda secara ketat mengikuti spesifikasi HMAC-SHA256 V4, termasuk format yang benar untuk Canonical String, header yang ditandatangani, dan header Authorization.

  2. Periksa bahwa bidang Resource dalam kebijakan RAM Anda persis sesuai dengan nama topik dan instans aktual. Perhatikan sensitivitas huruf besar/kecil.

  3. Konfirmasi bahwa pasangan Kunci Akses atau kredensial STS memiliki izin yang diperlukan untuk operasi yang Anda lakukan (misalnya, mq:PUB untuk mempublikasikan pesan).

Rekomendasi: Untuk menghindari kompleksitas autentikasi HTTP dan potensi error signature, gunakan SDK RocketMQ resmi, yang secara otomatis menangani penandatanganan permintaan.

T: Dapatkah saya menggunakan RequestId untuk mengetahui alasan spesifik kegagalan verifikasi izin ApsaraMQ for RocketMQ?

Tidak. Saat ini, Alibaba Cloud tidak mendukung kueri detail keputusan autentikasi IAM (Identity and Access Management) granular menggunakan RequestId. Ketika verifikasi izin gagal, backend hanya mengembalikan error umum AccessDenied tanpa mengekspos detail evaluasi kebijakan spesifik, seperti kebijakan mana yang menolak permintaan atau kondisi mana yang tidak terpenuhi.

Untuk memecahkan masalah kegagalan verifikasi izin, gunakan pendekatan self-service berikut:

  • Periksa kebijakan izin Anda: Tinjau kebijakan yang disambungkan ke pengguna atau peran RAM dan pastikan semua tindakan yang diperlukan secara eksplisit diizinkan.

  • Verifikasi kecocokan ARN Resource: Konfirmasi bahwa bidang Resource dalam kebijakan Anda sesuai dengan ARN resource aktual, termasuk ID wilayah, ID akun, ID instans, serta nama topik atau kelompok konsumen yang benar.

  • Periksa logika signature Anda: Jika Anda menggunakan protokol HTTP untuk mengakses ApsaraMQ for RocketMQ, verifikasi bahwa logika penandatanganan permintaan Anda benar.

  • Tinjau batasan izin dan kebijakan kepercayaan: Jika pengguna atau peran RAM dikenai batasan izin atau kebijakan kepercayaan, pastikan konfigurasi tersebut tidak membatasi tindakan yang diperlukan.

T: Bagaimana cara memberikan izin Cloud Monitor yang diperlukan kepada pengguna RAM untuk mengonfigurasi alert ApsaraMQ for RocketMQ?

Kebijakan izin kustom ApsaraMQ for RocketMQ hanya mengontrol akses ke resource ApsaraMQ for RocketMQ dan tidak mencakup izin Cloud Monitor. Untuk mengizinkan pengguna RAM mengonfigurasi alert ApsaraMQ for RocketMQ di Cloud Monitor, Anda harus memberikan izin Cloud Monitor kepada pengguna RAM tersebut secara terpisah.

Untuk memberikan izin Cloud Monitor read-only yang diperlukan:

  1. Masuk ke Konsol RAM menggunakan Akun Alibaba Cloud atau akun administrator RAM.

  2. Di panel navigasi kiri, pilih Identities > Users.

  3. Di halaman Users, temukan pengguna RAM target dan klik Add Permissions di kolom Actions.

  4. Di panel Add Permissions, konfigurasikan pengaturan berikut:

    • Tetapkan Authorization Scope sesuai kebutuhan Anda.

    • Tetapkan Policy Type ke System Policy.

  5. Di kotak pencarian, masukkan AliyunCloudMonitorReadOnlyAccess dan pilih kebijakan dari hasil pencarian.

  6. Klik OK untuk menyimpan pemberian izin.

Setelah izin diberikan, pengguna RAM dapat melihat metrik Cloud Monitor dan mengonfigurasi aturan alert untuk instans ApsaraMQ for RocketMQ.

T: Haruskah saya menggunakan kebijakan kustom RAM atau ACL untuk mengontrol izin pengiriman pesan di lingkungan pengembangan ApsaraMQ for RocketMQ 5.0?

Untuk mengontrol izin pengiriman dan penerimaan pesan di lingkungan pengembangan atau pengujian, gunakan ACL (Access Control List) daripada kebijakan kustom RAM.

  • ACL: Dirancang untuk kontrol izin pengiriman dan penerimaan pesan di tingkat aplikasi. ACL memungkinkan Anda memberikan izin kepada pengguna atau aplikasi tertentu untuk mempublikasikan ke atau berlangganan dari topik tertentu dalam suatu instans. Hal ini menjadikan ACL cocok untuk skenario pengembangan dan pengujian di mana Anda perlu mensimulasikan alur pesan atau mengontrol aplikasi mana yang dapat berinteraksi dengan topik tertentu.

  • Kebijakan kustom RAM: Dirancang untuk manajemen resource di tingkat akun Alibaba Cloud. Kebijakan RAM mengontrol operasi pada resource cloud, seperti membuat, mengubah, atau menghapus instans, topik, dan kelompok konsumen ApsaraMQ for RocketMQ. Kebijakan RAM mengatur siapa yang dapat mengelola resource ApsaraMQ for RocketMQ, bukan siapa yang dapat mengirim atau menerima pesan melalui resource tersebut.

Secara ringkas:

Skenario

Metode yang direkomendasikan

Mengontrol aplikasi mana yang dapat mengirim atau menerima pesan dalam suatu instans

ACL

Mengontrol siapa yang dapat membuat, mengubah, atau menghapus resource ApsaraMQ for RocketMQ (instans, topik, kelompok konsumen)

Kebijakan kustom RAM