Tüm Ürünler
Search
Belge Merkezi

MaxCompute:Yerleşik roller atanmış kullanıcılar için ilke tabanlı izin yönetimi

Son Güncelleme:Oct 04, 2026

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:

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.


Mekanizma


Çalışma biçimi


Kullanım durumu


İlke


Bir rol için proje nesneleri (tablolar gibi) üzerindeki belirli işlemlere izin verir veya bu izinleri iptal eder. Role uygulanan izinler, o role atanmış tüm kullanıcılar için geçerli olur.


Kullanıcının bir yerleşik rolü vardır ve belirli işlemleri kısıtlamanız gerekir; örneğin, belirli tabloları silmesini engellemek.


ACL


Nesne düzeyindeki izinleri doğrudan kullanıcılara veya gruplara verir veya iptal eder.


İlke tabanlı izin yönetimine gerek yoktur.

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.

Önemli

Bu işlemi yalnızca proje sahibi veya Super_Administrator ya da Admin rolüne sahip kullanıcılar yapabilir.

  1. MaxCompute istemcisini yükleyin ve başlatın.

  2. delete_test adında bir rol oluşturmak için CREATE ROLE komutunu çalıştırın.

    CREATE ROLE delete_test;

    Daha fazla bilgi için bkz. Rol planlama.

  3. Adı tb_ ile başlayan tüm tablolar üzerinde DROP işlemlerini reddetmek üzere delete_test rolünü yapılandırmak için GRANT komutunu ç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.

  4. delete_test rolünü Alice'e atamak için GRANT komutunu ç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.

  5. Alice'in izinlerini doğrulamak için SHOW GRANTS komutunu çalıştırın.

    SHOW GRANTS FOR ram$bo*@aliyun.com:Alice;

    Çıktının, Authorization Type: Policy altında bir [role/delete_test] bloğu içerdiğini ve tb_*: Drop girdisinde D (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: All

    Daha fazla bilgi için bkz. MaxCompute SQL kullanarak izinleri sorgulama.

  6. Kısıtlamayı test etmek için Alice olarak MaxCompute istemcisinde oturum açın ve DROP TABLE komutunu ç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 policy ve sondaki Deny 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.

Önemli

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.

  1. MaxCompute istemcisini yükleyin ve başlatın.

  2. Red kuralını delete_test rolünden kaldırmak için REVOKE komutunu ç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.

  3. Red kuralının kaldırıldığını doğrulamak için SHOW GRANTS komutunu çalıştırın.

    SHOW GRANTS FOR ram$bo*@aliyun.com:Alice;

    Authorization Type: Policy altı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: All

    Daha fazla bilgi için bkz. MaxCompute SQL kullanarak izinleri sorgulama.

  4. Silme işleminin artık başarılı olduğunu onaylamak için Alice olarak MaxCompute istemcisinde oturum açın ve DROP TABLE komutunu çalıştırın.

    DROP TABLE tb_test;

    OK yanı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.

  1. MaxCompute istemcisini yükleyin ve başlatın.

  2. delete_test rolünü Alice'ten kaldırmak için REVOKE komutunu çalıştırın.

    REVOKE delete_test FROM ram$bo*@aliyun.com:Alice;

    Daha fazla bilgi için bkz. Rol planlama.

  3. Alice'in artık delete_test rolüne sahip olmadığını onaylamak için SHOW GRANTS komutunu çalıştırın.

    SHOW GRANTS FOR ram$bo*@aliyun.com:Alice;

    [roles] satırında delete_test girdisi 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
  4. Kısıtlamanın kaldırıldığını onaylamak için Alice olarak MaxCompute istemcisinde oturum açın ve DROP TABLE komutunu çalıştırın.

    DROP TABLE tb_test;

    OK yanıtı dönerse Alice artık tb_* tablolarını silebilir.

  5. (İsteğe bağlı) Rol artık gerekli değilse delete_test rolünü silmek için DROP ROLE komutunu çalıştırın.

    DROP ROLE delete_test;

    OK yanıtı dönerse rol silinmiş demektir. Daha fazla bilgi için bkz. Rol planlama.