MaxCompute yerleşik rolleri geniş kapsamlı izinlerle gelir. Örneğin, Development rolü bir projedeki tüm tablolar ve kaynaklar üzerinde işlem izni verir. Belirli bir yerleşik rol kullanıcısının bazı işlemleri yapmasını kısıtlamanız gerektiğinde — örneğin kritik tabloların silinmesini engellemek gibi — mevcut role ek olarak red kurallarını katmanlamak için ilke tabanlı izin yönetimi mekanizmasını kullanın.
Bu konudaki tüm işlemler MaxCompute istemcisini gerektirir. İlke tabanlı red kuralları için konsol tabanlı izin yönetimi desteklenmez.
Ön koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
MaxCompute istemcisi yüklü. Daha fazla bilgi için bkz. MaxCompute istemcisini yükleme ve yapılandırma.
Proje sahibi rolüne veya hedef projede Super_Administrator ya da Admin yerleşik rolüne sahipsiniz.
Arka plan bilgisi
Zaten bir yerleşik rolü olan kullanıcılar için ayrıntılı izin kontrolü açısından ilke tabanlı mekanizma, erişim kontrol listesi (ACL) mekanizmasından daha etkilidir. Aşağıdaki tabloda her birinin ne zaman kullanılacağı gösterilmiştir.
|
|
|
|
|
|
|
|
|
|
|
|
Daha fazla bilgi için bkz. Kullanıcılar ve roller ve İlke tabanlı erişim kontrolü ve indirme kontrolü.
İlke tabanlı mekanizmayı kullanarak izinleri verme
Aşağıdaki örnek, Development rolüne atanmış RAM kullanıcısı Alice'in adı tb_ ile başlayan tabloları silmesini nasıl engelleyeceğinizi gösterir. Alice, bo*@aliyun.com Alibaba Cloud hesabına aittir.
Bu yaklaşım, yerleşik rolü doğrudan değiştirmek yerine ayrı bir red rolü (delete_test) oluşturur. Bu sayede red kuralı izole edilir ve iptal edilmesi kolaylaşır; kuralı, yerleşik rolü paylaşan diğer kullanıcıları etkilemeden tek bir kullanıcıdan kaldırabilirsiniz.
Bu işlemi yalnızca proje sahibi veya Super_Administrator ya da Admin rolüne sahip kullanıcılar yapabilir.
-
delete_testadında bir rol oluşturmak içinCREATE ROLEkomutunu çalıştırın.CREATE ROLE delete_test;Daha fazla bilgi için bkz. Rol planlama.
-
Adı
tb_ile başlayan tüm tablolar üzerinde DROP işlemlerini reddetmek üzeredelete_testrolünü yapılandırmak içinGRANTkomutunu çalıştırın.GRANT DROP ON TABLE tb_* TO ROLE delete_test privilegeproperties("policy" = "true", "allow"="false");"policy" = "true"bayrağı ilke tabanlı mekanizmayı etkinleştirir."allow"="false"bayrağı ise kuralı red olarak ayarlar. GRANT sözdizimi hakkında daha fazla bilgi için İlke tabanlı erişim kontrolü ve indirme kontrolü belgesindeki "GRANT ifadesini kullanarak ilke tabanlı erişim kontrolü" bölümüne bakın. -
delete_testrolünü Alice'e atamak içinGRANTkomutunu çalıştırın.GRANT delete_test TO ram$bo*@aliyun.com:Alice;Alice'in ait olduğu Alibaba Cloud hesabını bilmiyorsanız bunu öğrenmek için MaxCompute istemcisinde
LIST USERS;komutunu çalıştırın. Daha fazla bilgi için bkz. Rol planlama. -
Alice'in izinlerini doğrulamak için
SHOW GRANTSkomutunu çalıştırın.SHOW GRANTS FOR ram$bo*@aliyun.com:Alice;Çıktının,
Authorization Type: Policyaltında bir[role/delete_test]bloğu içerdiğini vetb_*: DropgirdisindeD(Deny/Red) ön eki bulunduğunu onaylayın.[roles] role_project_admin, delete_test Authorization Type: Policy [role/delete_test] D projects/mcproject_name/tables/tb_*: Drop [role/role_project_admin] A projects/mcproject_name: * A projects/mcproject_name/instances/*: * A projects/mcproject_name/jobs/*: * A projects/mcproject_name/offlinemodels/*: * A projects/mcproject_name/packages/*: * A projects/mcproject_name/registration/functions/*: * A projects/mcproject_name/resources/*: * A projects/mcproject_name/tables/*: * A projects/mcproject_name/volumes/*: * Authorization Type: ObjectCreator AG projects/mcproject_name/tables/local_test: All AG projects/mcproject_name/tables/mr_multiinout_out1: All AG projects/mcproject_name/tables/mr_multiinout_out2: All AG projects/mcproject_name/tables/ramtest: All AG projects/mcproject_name/tables/wc_in: All AG projects/mcproject_name/tables/wc_in1: All AG projects/mcproject_name/tables/wc_in2: All AG projects/mcproject_name/tables/wc_out: AllDaha fazla bilgi için bkz. MaxCompute SQL kullanarak izinleri sorgulama.
-
Kısıtlamayı test etmek için Alice olarak MaxCompute istemcisinde oturum açın ve
DROP TABLEkomutunu çalıştırın.DROP TABLE tb_test;Red kuralı etkinse komut aşağıdakine benzer bir hata ile başarısız olur:
FAILED: Catalog Service Failed, ErrorCode: 50, Error Message: ODPS-0130013:Authorization exception - Authorization Failed [4011], You have NO privilege 'odps:Drop' on {acs:odps:*:projects/mcproject_name/tables/tb_test}. Explicitly denied by policy. Context ID:85efa8e9-40da-4660-bbfd-b503dfa64c0a. --->Tips: Pricipal:RAM$bo*@aliyun.com:Alice; Deny by policyİlke tabanlı red kuralının yürürlükte olduğunu iki ifade teyit eder: hatanın ortasındaki
Explicitly denied by policyve sondakiDeny by policy. Bu ifadelerin hiçbiri görünmüyorsa veya bunun yerine tablo siliniyorsa önceki tüm adımların doğru tamamlandığını kontrol edin.
İlke tabanlı mekanizmayı kullanarak izinleri iptal etme
tb_ önekine sahip tablolar artık kritik değilse ve Alice'in bunları silmesine izin vermek istiyorsanız aşağıdaki iki yöntemden birini kullanarak red iznini iptal edin.
Bu işlemi yalnızca proje sahibi veya Super_Administrator ya da Admin rolüne sahip kullanıcılar yapabilir.
Yöntem 1: Red kuralını rolden kaldırma
delete_test rolünü Alice'e atamaya devam ederken red kısıtlamasını kaldırmak için bu yöntemi kullanın.
-
Red kuralını
delete_testrolünden kaldırmak içinREVOKEkomutunu çalıştırın.REVOKE DROP ON TABLE tb_* FROM ROLE delete_test privilegeproperties("policy" = "true", "allow"="false");REVOKE sözdizimi hakkında daha fazla bilgi için İlke tabanlı erişim kontrolü ve indirme kontrolü belgesindeki "GRANT ifadesini kullanarak ilke tabanlı erişim kontrolü" bölümüne bakın.
-
Red kuralının kaldırıldığını doğrulamak için
SHOW GRANTSkomutunu çalıştırın.SHOW GRANTS FOR ram$bo*@aliyun.com:Alice;Authorization Type: Policyaltında artık[role/delete_test]bloğu görünmemelidir; bu, kısıtlamanın kaldırıldığını teyit eder.[roles] role_project_admin, delete_test Authorization Type: Policy [role/role_project_admin] A projects/mcproject_name: * A projects/mcproject_name/instances/*: * A projects/mcproject_name/jobs/*: * A projects/mcproject_name/offlinemodels/*: * A projects/mcproject_name/packages/*: * A projects/mcproject_name/registration/functions/*: * A projects/mcproject_name/resources/*: * A projects/mcproject_name/tables/*: * A projects/mcproject_name/volumes/*: * Authorization Type: ObjectCreator AG projects/mcproject_name/tables/local_test: All AG projects/mcproject_name/tables/mr_multiinout_out1: All AG projects/mcproject_name/tables/mr_multiinout_out2: All AG projects/mcproject_name/tables/ramtest: All AG projects/mcproject_name/tables/tb_test: All AG projects/mcproject_name/tables/wc_in: All AG projects/mcproject_name/tables/wc_in1: All AG projects/mcproject_name/tables/wc_in2: All AG projects/mcproject_name/tables/wc_out: AllDaha fazla bilgi için bkz. MaxCompute SQL kullanarak izinleri sorgulama.
-
Silme işleminin artık başarılı olduğunu onaylamak için Alice olarak MaxCompute istemcisinde oturum açın ve
DROP TABLEkomutunu çalıştırın.DROP TABLE tb_test;OKyanıtı dönerse red kuralı başarıyla kaldırılmış demektir.
Yöntem 2: Red rolünü kullanıcıdan iptal etme
Alice'in delete_test rolüyle olan ilişkisini tamamen kaldırmak için bu yöntemi kullanın. İsteğe bağlı olarak, rol artık gerekli değilse silebilirsiniz.
-
delete_testrolünü Alice'ten kaldırmak içinREVOKEkomutunu çalıştırın.REVOKE delete_test FROM ram$bo*@aliyun.com:Alice;Daha fazla bilgi için bkz. Rol planlama.
-
Alice'in artık
delete_testrolüne sahip olmadığını onaylamak içinSHOW GRANTSkomutunu çalıştırın.SHOW GRANTS FOR ram$bo*@aliyun.com:Alice;[roles]satırındadelete_testgirdisi bulunmamalıdır.[roles] role_project_admin Authorization Type: Policy [role/role_project_admin] A projects/mcproject_name: * A projects/mcproject_name/instances/*: * A projects/mcproject_name/jobs/*: * A projects/mcproject_name/offlinemodels/*: * A projects/mcproject_name/packages/*: * A projects/mcproject_name/registration/functions/*: * A projects/mcproject_name/resources/*: * A projects/mcproject_name/tables/*: * A projects/mcproject_name/volumes/*: * Authorization Type: ObjectCreator AG projects/mcproject_name/tables/local_test: All AG projects/mcproject_name/tables/mr_multiinout_out1: All AG projects/mcproject_name/tables/mr_multiinout_out2: All AG projects/mcproject_name/tables/ramtest: All AG projects/mcproject_name/tables/wc_in: All AG projects/mcproject_name/tables/wc_in1: All AG projects/mcproject_name/tables/wc_in2: All AG projects/mcproject_name/tables/wc_out: All -
Kısıtlamanın kaldırıldığını onaylamak için Alice olarak MaxCompute istemcisinde oturum açın ve
DROP TABLEkomutunu çalıştırın.DROP TABLE tb_test;OKyanıtı dönerse Alice artıktb_*tablolarını silebilir. -
(İsteğe bağlı) Rol artık gerekli değilse
delete_testrolünü silmek içinDROP ROLEkomutunu çalıştırın.DROP ROLE delete_test;OKyanıtı dönerse rol silinmiş demektir. Daha fazla bilgi için bkz. Rol planlama.