ApsaraMQ for RocketMQ için önceden tanımlanmış sistem ilkeleri erişim kontrolü gereksinimlerinizi karşılamadığında, en az ayrıcalık ilkesine dayalı erişimi örnek, konu veya grup düzeyinde uygulamak için özel Resource Access Management (RAM) ilkeleri oluşturun.
Sistem ilkeleri ile özel ilkelerin karşılaştırılması
RAM ilkeleri iki kategoriye ayrılır:
| Tür | Oluşturan | Düzenlenebilir | Sürüm denetimi |
|---|---|---|---|
| Sistem ilkeleri | Alibaba Cloud | Hayır | Hayır |
| Özel ilkeler | Siz | Evet | Evet, RAM sürüm yönetimi aracılığıyla |
Özel bir ilke oluşturduktan sonra, belirtilen izinleri vermek için bu ilkeyi bir RAM kullanıcısına, RAM kullanıcı grubuna veya RAM rolüne ekleyin. Herhangi bir asıl öğeye eklenmemiş özel bir ilkeyi doğrudan silebilirsiniz. Bir asıl öğeye eklenmiş özel bir ilkeyi silmek için önce ilkenin ekini kaldırın.
Eylemler ve kaynak kapsamı
Aşağıdaki tabloda, ApsaraMQ for RocketMQ özel ilkeleri için kullanılabilen eylemler ve her bir eylemin uygulandığı kaynak türleri listelenmiştir.
| Eylem | Açıklama | Uygulanabilir kaynak türleri |
|---|---|---|
mq:QueryInstanceBaseInfo |
Örnek ayrıntılarını sorgulayın | Örnek |
mq:PUB |
Bir konuya mesaj yayınlayın | Konu |
mq:SUB |
Bir konudan veya gruptan gelen mesajlara abone olun | Konu, Grup |
mq:* |
Tüm eylemler | Tümü |
Kaynak ARN biçimleri
ApsaraMQ for RocketMQ, örneğinizin ad alanı kullanıp kullanmadığına bağlı olarak iki kaynak kapsamlandırma modelini destekler. En genelden en dar olana doğru kapsamlandırma hiyerarşisi şu şekildedir: Örnek > Konu/Grup.
Ad alanları ile -- Konular ve gruplar bir örnek kapsamında tanımlanır. Örnek kimliği, konu ve grup ARN'nin bir parçasıdır.
Ad alanları olmadan -- Konular ve gruplar genel kapsamlıdır. ARN yalnızca konu veya grup adını içerir.
| Kaynak | ARN (ad alanı ile) | ARN (ad alanı olmadan) |
|---|---|---|
| Örnek | acs:mq:*:*:{instanceId} |
acs:mq:*:*:{instanceId} |
| Konu | acs:mq:*:*:{instanceId}%{topic} |
acs:mq:*:*:{topic} |
| Grup | acs:mq:*:*:{instanceId}%{groupId} |
acs:mq:*:*:{groupId} |
| Bir örnek üzerindeki tüm kaynaklar | acs:mq:*:*:{instanceId}* |
Uygulanamaz |
Bir konu veya grup üzerinde izin vermeden önce, ilgili örnek üzerinde mq:QueryInstanceBaseInfo iznini verin.
Özel ilke oluşturma ve uygulama
RAM konsolunda özel bir ilke oluşturun. Ayrıntılı adımlar için bkz. Özel ilke oluşturma.
İlkeyi bir RAM kullanıcısına, RAM kullanıcı grubuna veya RAM rolüne ekleyin.
Asıl öğenin yalnızca amaçlanan kaynaklara erişebildiğini doğrulayın.
Özel bir ilke kullanmak için işinizin izin yönetimi gereksinimlerini ve ApsaraMQ for RocketMQ yetkilendirme bilgilerini anlamanız gerekir. Eylemlerin ve kaynak tanımlarının tam listesi için bkz. RAM yetkilendirmesi.
İlke örnekleri
Aşağıdaki JSON örneklerinde açıklama amacıyla // yorumları bulunur. Kodu kullanmadan önce tüm yorumları kaldırın. JSON satır içi yorumları desteklemez.
Belirli bir konu ve grupta yayınlama ve abonelik izinleri verme
Bu ilke, bir RAM kullanıcısına tek bir örnek üzerindeki belirli bir konuya mesaj yayınlama ve bu konudan mesaj alma ile belirli bir gruba abone olma izni verir.
Aşağıdaki yer tutucuları kendi değerlerinizle değiştirin:
| Yer Tutucu | Açıklama | Örnek |
|---|---|---|
{instanceId} |
RocketMQ örnek kimliği | MQ_INST_abc123 |
{topic} |
Konu adı | order-topic |
{groupId} |
Tüketici grubu kimliği | GID_order-consumer |
Ad alanı içeren örnekler:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"mq:QueryInstanceBaseInfo"
],
"Resource": [
"acs:mq:*:*:{instanceId}"
]
},
{
"Effect": "Allow",
"Action": [
"mq:PUB",
"mq:SUB"
],
"Resource": [
"acs:mq:*:*:{instanceId}%{topic}"
]
},
{
"Effect": "Allow",
"Action": [
"mq:SUB"
],
"Resource": [
"acs:mq:*:*:{instanceId}%{groupId}"
]
}
]
}
İlke üç ifade içerir:
İfade 1 -- Örnek üzerinde
mq:QueryInstanceBaseInfoizni verir. Konu veya grup düzeyinde izinler verilmeden önce gereklidir.İfade 2 --
{instanceId}%{topic}ARN biçimi kullanılarak örnek kapsamında belirli bir konu üzerindemq:PUBvemq:SUBizinleri verir.İfade 3 -- Belirli bir grup üzerinde
mq:SUBizni verir.
Ad alanı içermeyen örnekler:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"mq:QueryInstanceBaseInfo"
],
"Resource": [
"acs:mq:*:*:{instanceId}"
]
},
{
"Effect": "Allow",
"Action": [
"mq:PUB",
"mq:SUB"
],
"Resource": [
"acs:mq:*:*:{topic}"
]
},
{
"Effect": "Allow",
"Action": [
"mq:SUB"
],
"Resource": [
"acs:mq:*:*:{groupId}"
]
}
]
}
Fark şudur: Konu ve grup ARN'leri örnek kimliği ön ekini içermez. Kaynak alanında acs:mq:*:*:{instanceId}%{topic} yerine acs:mq:*:*:{topic} kullanılır.
Bir örneğin tüm kaynaklarında tam izinler verme
Bu ilke, tek bir örnek içindeki her kaynağa (konular, gruplar) yönelik tüm izinleri verir. Yalnızca ad alanı içeren örnekler için geçerlidir.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"mq:*"
],
"Resource": [
"acs:mq:*:*:{instanceId}*"
]
}
]
}
{instanceId} sonrasında bulunan joker karakter * , o örnek üzerindeki tüm konuları ve gruplarla eşleşir. {instanceId} ifadesini kendi örnek kimliğinizle değiştirin.