Tüm Ürünler
Search
Belge Merkezi

ApsaraMQ for RocketMQ:Custom policies for ApsaraMQ for RocketMQ

Son Güncelleme:Oct 04, 2026

Resource Access Management (RAM) ilkeleri, ApsaraMQ for RocketMQ kaynaklarınıza kimlerin erişebileceğini ve hangi eylemleri gerçekleştirebileceğini denetler. Yerleşik sistem ilkeleri ihtiyaçlarınız için çok geniş kapsamlıysa, en az ayrıcalık ilkesine dayalı erişimi uygulamak üzere özel ilkeler oluşturun.

Özel ilkelerin ne zaman kullanılacağı

Sistem ilkeleri önceden tanımlanmış izin kümelerini sağlar. Aşağıdaki durumlarda özel bir ilke kullanın:

  • Erişimi belirli bir örnek, konu veya tüketici grubuyla sınırlamak

  • Yalnızca örnek oluşturma veya konuları silme gibi belirli eylemlere izin vermek

  • Birden fazla izin kapsamını tek bir ilke içinde birleştirmek

Özel ilkelerin çalışma biçimi

Özel bir ilke oluşturduktan sonra, belirtilen izinleri vermek üzere bu ilkeyi bir RAM kullanıcısına, RAM kullanıcı grubuna veya RAM rolüne ekleyin.

Şu kuralları aklınızda bulundurun:

  • Silmeden önce ayırın. Hiçbir asıl öğeye eklenmemiş bir ilkeyi silebilirsiniz. İlke bir asıl öğeye eklenmişse önce ilkeyi ayırın.

  • Sürüm kontrolü kullanın. Özel ilkeler sürüm oluşturmayı destekler. RAM tarafından sağlanan sürüm yönetimi mekanizmasına göre özel ilke sürümlerini yönetebilirsiniz.

Kaynak ARN biçimi

Bir ilkenin her Resource alanı, hedefi tanımlamak için bir Alibaba Cloud Resource Name (ARN) kullanır. ApsaraMQ for RocketMQ için ARN biçimi şöyledir:

acs:rocketmq:{regionId}:{accountId}:instance/{InstanceId}/topic/{TopicName}
Bölüm Açıklama
{regionId} Örneğin bulunduğu bölge. Bkz. Uç Noktalar.
{accountId} Alibaba Cloud hesap ID'niz.
{InstanceId} ApsaraMQ for RocketMQ örnek ID'si.
{TopicName} Konu adı.
{ConsumerGroupId} Tüketici grubu ID'si.

Kapsamı genişletmek için joker karakterleri kullanın:

Desen Kapsam
instance/* Belirtilen bölgede hesap altındaki tüm örnekler
instance/{InstanceId}* Belirli bir örnek ve bunun tüm alt kaynakları (konular, tüketici grupları)
*:{#accountId}:*/* Tüm bölgelerde hesap altındaki tüm kaynaklar

İlke örnekleri

Önemli

İlkeyi uygulamadan önce aşağıdaki örneklerdeki yer tutucu değerleri gerçek kaynak tanımlayıcılarınızla değiştirin.

Belirli bir örneğe tam erişim izni verme

Bu ilke, tek bir örnek ve bunun alt kaynakları üzerinde tüm ApsaraMQ for RocketMQ izinlerini verir. Örnekleri listeleme, belirli bir örnekte işlem yapma ve tanılama sorgulama işlemleri için farklı kaynak kapsamları gerektiğinden ilke üç ifade içerir.

{
    "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}:*/*"
            ]
        }
    ]
}

Üç ifadenin farklı amaçları vardır:

  1. Örnekleri listeleme -- Tüm örnekler üzerindeki rocketmq:ListInstances eylemi (instance/*), kullanıcının konsolda hedef örneği görüntülemesine ve bulmasına olanak tanır.

  2. Tam örnek erişimi -- Belirli bir örnek üzerindeki rocketmq:* eylemi (instance/{InstanceId}*). Sondaki joker karakter tüm alt kaynakları kapsar.

  3. Tanılama erişimi -- rocketmq:ListAnalyticsQuery eylemi tanılama sorgularını etkinleştirir. Joker karakterli bölge (*), bölgeler arası sorgulamaya olanak tanır.

Örnek oluşturma izni verme

Bu ilke, bir RAM kullanıcısının belirli bir bölgede ApsaraMQ for RocketMQ örnekleri oluşturmasına izin verir. Oluşturma sırasında örnek ID'si henüz bilinmediğinden kaynak instance/* olarak belirtilir.

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

Belirli bir konuyu silme izni verme

Bu ilke, DeleteTopic eylemini belirli bir örnekteki tek bir konuyla sınırlar. Daha geniş izinler vermeden konu temizleme görevini devretmek için bu deseni kullanın.

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

Örnek tanılama işlemlerine tam erişim izni verme

Bu ilke, tanılama ile ilgili tüm izinleri verir: analitik sorguları gönderme, listeleme ve alma. Joker karakterli bölge ve kaynak deseni, hesap altındaki tüm örnekler ve bölgeler arasında tanılama erişimini etkinleştirir.

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

Bir RAM kullanıcısına örnek listesini görüntüleme ve belirtilen bir örnekte işlem yapma izinleri verme

{
    "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}*"
            ]
        }
    ]
}
Not

Bu örnek, liste türü eylemler ile örnek bazlı eylemler arasındaki Kaynak yapılandırması farkını göstermektedir:

  • Liste türü eylemler (örneğin, rocketmq:ListInstances ve rocketmq:GetUserTags): Kaynak alanı acs:rocketmq:*:*:instance/* joker karakter biçimini kullanmalıdır. Liste türü eylemler için Kaynağı belirli bir örnek ARN'siyle kısıtlayamazsınız. Böyle yaparsanız eylem başarısız olur.

  • Örnek okuma/yazma eylemleri (örneğin, rocketmq:*): Kaynağı acs:rocketmq:{regionId}:{accountId}:instance/{InstanceId}* gibi belirli bir örnek ARN'siyle kısıtlayabilirsiniz.

Bir RAM kullanıcısına liste türü eylem izinlerini dahil etmeden yalnızca belirli bir örnek için izinlerseniz RAM kullanıcısı konsolda veya API'leri çağırırken örnek listesini görüntüleyemez ve NoPermission hatası alır.

Sonraki adımlar

SSS

S: HTTP üzerinden ApsaraMQ for RocketMQ'ye erişirken neden "valid resource owner failed" veya "AccessDenied (OwnerId forbidden)" hatası alıyorum?

Neden: Bu hata genellikle aşağıdaki nedenlerden biriyle oluşur:

  • İmza oluşturma hatası: HTTP isteği imzası HMAC-SHA256 V4 spesifikasyonuna uymuyor. Yaygın sorunlar arasında hatalı oluşturulmuş Canonical String veya yanlış biçimlendirilmiş Authorization başlığı bulunur.

  • RAM ilkesinde kaynak uyumsuzluğu: RAM ilkenizdeki Resource alanı, hedef konu veya örnekle tam olarak eşleşmiyor. ApsaraMQ for RocketMQ'deki konu adları büyük/küçük harfe duyarlıdır. HTTP protokolü üzerinden mesaj yayınlama için doğru Resource biçimi acs:mq:*:*:instance/{InstanceId}/topic/{TopicName} şeklindedir.

  • Yetersiz izinler: İstek için kullanılan AccessKey çifti veya STS kimlik bilgilerinin mesaj yayınlama gibi gerekli izinleri (örneğin, mq:PUB) yoktur.

Çözüm:

  1. HTTP isteği imzanızın, Canonical String, imzalanan başlıklar ve Authorization başlığı için doğru biçim dahil olmak üzere HMAC-SHA256 V4 spesifikasyonunu sıkı bir şekilde takip ettiğini doğrulayın.

  2. RAM ilkenizdeki Resource alanının gerçek konu ve örnek adlarıyla tam olarak eşleştiğini kontrol edin. Büyük/küçük harf duyarlılığına özellikle dikkat edin.

  3. AccessKey çiftinin veya STS kimlik bilgilerinin gerçekleştirdiğiniz işlem için gerekli izinlere sahip olduğunu onaylayın (örneğin, mesaj yayınlama için mq:PUB).

Öneri: HTTP kimlik doğrulama karmaşıklığını ve olası imza hatalarını önlemek için istek imzalamayı otomatik olarak işleyen resmi RocketMQ SDK'sını kullanın.

S: ApsaraMQ for RocketMQ izin doğrulamasının neden başarısız olduğunun belirli nedenini sorgulamak için RequestId kullanabilir miyim?

Hayır. Şu anda Alibaba Cloud, bir RequestId kullanarak ayrıntılı IAM (Identity and Access Management) kimlik doğrulama kararı detaylarını sorgulamayı desteklememektedir. İzin doğrulaması başarısız olduğunda arka uç yalnızca genel bir AccessDenied hatası döndürür ve hangi ilkenin isteği reddettiği veya hangi koşulun karşılanmadığı gibi belirli ilke değerlendirme ayrıntılarını göstermez.

İzin doğrulama hatalarını gidermek için aşağıdaki kendi kendine hizmet yöntemlerini kullanın:

  • İzin ilkelerinizi kontrol edin: RAM kullanıcısının veya rolünün ekli ilkelerini gözden geçirin ve gerekli tüm eylemlerin açıkça izin verildiğini doğrulayın.

  • Kaynak ARN eşleşmesini doğrulayın: İlkelerinizdeki Resource alanının, doğru bölge ID'si, hesap ID'si, örnek ID'si ve konu veya tüketici grubu adı dahil olmak üzere gerçek kaynak ARN'leriyle eşleştiğini onaylayın.

  • İmza mantığınızı kontrol edin: ApsaraMQ for RocketMQ'ye erişmek için HTTP protokolünü kullanıyorsanız istek imzalama mantığınızın doğru olduğunu doğrulayın.

  • İzin sınırlarını ve güven ilkelerini gözden geçirin: RAM kullanıcısı veya rolü bir izin sınırına veya güven ilkesine tabiyse bu yapılandırmaların gerekli eylemleri kısıtlamadığını doğrulayın.

S: ApsaraMQ for RocketMQ uyarılarını yapılandırmak için gereken Cloud Monitor izinlerini bir RAM kullanıcısına nasıl verebilirim?

ApsaraMQ for RocketMQ özel izin ilkeleri yalnızca ApsaraMQ for RocketMQ kaynaklarına erişimi kontrol eder ve Cloud Monitor izinlerini içermez. Bir RAM kullanıcısının Cloud Monitor'de ApsaraMQ for RocketMQ uyarılarını yapılandırmasına izin vermek için Cloud Monitor izinlerini RAM kullanıcısına ayrı olarak vermelisiniz.

Gerekli Cloud Monitor salt okuma izinlerini vermek için:

  1. Bir Alibaba Cloud hesabı veya RAM yönetici hesabı kullanarak RAM konsoluna giriş yapın.

  2. Sol gezinme bölmesinde Identities > Users seçeneğini belirleyin.

  3. Users sayfasında hedef RAM kullanıcısını bulun ve Actions sütununda Add Permissions seçeneğine tıklayın.

  4. Add Permissions panelinde aşağıdaki ayarları yapılandırın:

    • Authorization Scope seçeneğini gereksinimlerinize göre ayarlayın.

    • Policy Type seçeneğini System Policy olarak ayarlayın.

  5. Arama kutusuna AliyunCloudMonitorReadOnlyAccess girin ve arama sonuçlarından ilkeyi seçin.

  6. İzin atamasını kaydetmek için OK seçeneğine tıklayın.

İzin verildikten sonra RAM kullanıcısı Cloud Monitor ölçümlerini görüntüleyebilir ve ApsaraMQ for RocketMQ örnekleri için uyarı kuralları yapılandırabilir.

S: ApsaraMQ for RocketMQ 5.0 geliştirme ortamında mesaj gönderme izinlerini kontrol etmek için RAM özel ilkelerini mi yoksa ACL'yi mi kullanmalıyım?

Geliştirme veya test ortamında mesaj gönderme ve alma izinlerini kontrol etmek için RAM özel ilkeleri yerine ACL (Access Control List) kullanın.

  • ACL: Uygulama düzeyinde mesaj gönderme ve alma izin kontrolü için tasarlanmıştır. ACL, belirli kullanıcılara veya uygulamalara bir örnek içindeki belirli konulara yayınlama veya bu konulardan abonelik olma izinleri vermenize olanak tanır. Bu durum, mesaj akışlarını simüle etmeniz veya hangi uygulamaların belirli konularla etkileşime girebileceğini kontrol etmeniz gereken geliştirme ve test senaryoları için ACL'yi uygun kılar.

  • RAM özel ilkeleri: Alibaba Cloud hesap düzeyinde kaynak yönetimi için tasarlanmıştır. RAM ilkeleri, ApsaraMQ for RocketMQ örnekleri, konuları ve tüketici grupları oluşturma, değiştirme veya silme gibi cloud kaynakları üzerindeki işlemleri kontrol eder. RAM ilkeleri, ApsaraMQ for RocketMQ kaynaklarını kimlerin yönetebileceğini belirler; bu kaynaklar üzerinden kimlerin mesaj gönderebileceğini veya alabileceğini değil.

Özetle:


Senaryo


Önerilen yöntem


Bir örnek içinde hangi uygulamaların mesaj gönderebileceğini veya alabileceğini kontrol etme


ACL


ApsaraMQ for RocketMQ kaynaklarını (örnekler, konular, tüketici grupları) kimlerin oluşturabileceğini, değiştirebileceğini veya silebileceğini kontrol etme


RAM özel ilkeleri