日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Policy權限控制

MaxCompute的Policy權限控制方案提供了更加復雜和靈活的權限設置,適合需要細粒度控制的大型企業和復雜場景。相比ACL權限控制增加黑名單方式,即可以實現允許或禁止角色對指定對象執行指定操作,將角色綁定至用戶后,用戶權限即可生效。本文介紹MaxCompute支持的Policy授權命令,并提供授權示例供參考。

背景信息

Policy權限控制支持白名單和黑名單授權機制,即允許(白名單)或禁止(黑名單)角色對指定對象執行指定操作。

該授權方式可以彌補ACL授權機制無法解決的授權問題。例如用戶已經被賦予了開發角色,默認具備刪除表的權限,但如果需要禁止用戶執行刪除表操作,可以通過Policy方式進行授權。

創建MaxCompute項目后,Policy權限控制功能開關默認為打開狀態。項目所有者(Project Owner)可以在MaxCompute項目中執行set CheckPermissionUsingPolicy=true|false;命令,開啟或關閉Policy權限控制功能。

Policy權限控制適用于如下場景。

場景

說明

授權人

授權操作入口

基于角色為用戶授權

直接為單個角色,授予允許或禁止角色對指定對象執行單個或多個操作的權限,然后再將角色綁定至多個用戶,用戶即可具備角色的權限。

請參見權限一覽表的支持的授權人列。

為被賦予內置角色的用戶通過自定義角色進行精細化授權

當用戶已經被賦予內置角色時,如果需要對用戶的操作權限進行更精細化的管理,無法通過ACL權限控制方案解決此類授權問題。此時,您可以通過Policy權限控制方案,新增角色,允許或禁止角色操作項目中的對象,并將角色綁定至用戶后,即可實現精細化管控用戶權限。

前提條件

使用Policy權限控制方案前,請您確認已記錄好如下信息:

  • 被授權角色的名稱,且角色已添加至MaxCompute項目。

    您可以通過MaxCompute客戶端執行list roles;命令獲取角色信息。

    如果需要新增角色,請參見角色規劃

  • 授權對象類型、對象名稱及操作。

    更多對象類型及操作信息,請參見MaxCompute權限

使用限制

Policy權限控制只支持對已存在的角色進行授權。

注意事項

使用Policy權限控制功能的注意事項如下:

  • 當白名單和黑名單授權信息同時存在時,遵循黑名單優先原則。

  • Policy權限控制允許對不存在的對象授權,當刪除對象時,與該對象關聯的Policy授權信息不會被刪除,授權人需要注意刪除并重建同名對象所帶來的安全風險。

  • 當一個用戶被移除后,與該用戶有關的授權仍然會被保留。一旦該用戶以后被再次添加到該項目時,該用戶的歷史授權訪問權限將被重新激活。如果需要徹底清除用戶的權限信息,請參見徹底清除被刪除用戶遺留的權限信息

命令格式

Policy權限控制命令格式如下:

  • Policy授權

    grant <actions> on <object_type> <object_name> 
    to ROLE <role_name> 
    privilegeproperties("policy" = "true", "allow"="{true|false}"[, "conditions"= "<conditions>" ]);
  • 撤銷Policy授權

    revoke <actions> on <object_type> <object_name> 
    from ROLE <role_name> 
    privilegeproperties ("policy" = "true", "allow"="{true|false}");

參數說明如下。

參數名稱

是否必填

說明

actions

指定被授予的操作權限名稱。單次授權可以指定多個操作。

當有多個操作時,多個操作名稱之間使用英文逗號(,)分隔。操作取值請參見MaxCompute權限

object_type

指定被授予的對象類型,即客體。單次授權只能指定一個客體。

客體取值請參見MaxCompute權限

object_name

指定被授予的對象的名稱。獲取方式如下:

  • 項目名稱:您可以登錄MaxCompute控制臺,左上角切換地域后,即可在項目管理頁簽獲取具體的MaxCompute項目名稱。

  • 表名稱:您可以通過MaxCompute客戶端執行show tables;命令獲取表或視圖名稱。

  • 資源名稱:您可以通過MaxCompute客戶端執行list resources;命令獲取資源名稱。

  • 函數名稱:您可以通過MaxCompute客戶端執行list functions;命令獲取函數名稱。

  • 實例名稱:您可以通過MaxCompute客戶端執行show instances;命令獲取實例ID。

授權對象支持以通配符星號(*)來表達。例如,table taobao*表示所有以taobao開頭的表。

說明

授權給ROLE支持使用通配符星號(*);授權給USER不支持使用通配符。

role_name

指定被授權的角色名稱。單次授權只能指定一個角色。

您可以通過MaxCompute客戶端執行list roles;命令獲取角色名稱。

privilegeproperties

policy

固定取值為true。表示使用Policy權限控制方案。

allow

白名單授權必填

指定白名單授權機制。取值范圍如下:

  • true:表示允許對指定對象執行指定操作。

  • false:表示不允許對指定對象執行指定操作,即黑名單。

conditions

從請求消息來源及訪問方式等維度進行權限控制。詳細參數取值請參見Conditions

Policy權限控制示例

假設Bob@aliyun.com是test_project_a的項目所有者,Allen、Tom是隸屬于bob@aliyun.com的RAM用戶。Allen已被賦予test_project_a項目的Admin角色。以MaxCompute客戶端操作為例,授權示例如下:

  • 示例一:基于角色為用戶授權(黑名單)

    禁止Tom刪除以tb_開頭的表。

    • 通過ACL命令實現Policy授權示例如下:

      --Bob進入項目test_project_a。
      use test_project_a; 
      --創建角色Worker。
      create role Worker; 
      --將用戶Tom添加為項目成員。
      add user RAM$Bob@aliyun.com:Tom;
      --將角色Worker綁定至用戶Tom。
      grant Worker TO RAM$Bob@aliyun.com:Tom; 
      --禁止角色Worker刪除項目test_project_a中以tb_開頭的表。
      grant Drop on table tb_* to ROLE Worker privilegeproperties("policy" = "true", "allow"="false");
      --查看用戶Tom的授權結果。
      show grants for RAM$Bob@aliyun.com:Tom; 
      --授權結果如下。D表示禁止,禁止刪除以tb_開頭的表。
      Authorization Type: Policy
      [role/worker]
      D      projects/test_project_a/tables/tb_*: Drop
    • 通過控制臺實現Policy授權示例如下:

      1. 登錄MaxCompute控制臺,在左上角選擇地域。

      2. 在左側導航欄單擊項目管理

      3. 項目管理頁面,單擊目標項目操作列的管理

      4. 角色權限頁簽,單擊新增項目級別角色

      5. 新建角色對話框,創建資源操作類(Resource)角色,填寫角色名稱和Policy授權策略。

        Policy內容如下:

        {
            "Statement":[
                {
                    "Action":[
                        "odps:Drop"
                    ],
                    "Effect":"Deny",
                    "Resource":[
                        "acs:odps:*:projects/test_project_a/tables/tb_*"
                    ]
                }
            ],
            "Version":"1"
        }
      6. 角色權限頁簽,單擊新建角色操作列的成員管理,將RAM$Bob@aliyun.com:Tom添加至新建角色。

  • 示例二:撤銷Policy授權(黑名單)

    基于示例一,撤銷對用戶Tom的授權。

    --Bob進入項目test_project_a。
    use test_project_a; 
    --收回用戶Tom綁定的角色Worker。
    revoke Worker from RAM$Bob@aliyun.com:Tom;
    --查看用戶Tom的授權結果。權限列表無Drop權限信息。
    show grants for RAM$Bob@aliyun.com:Tom; 
  • 示例三:基于角色為用戶授權(白名單)

    允許Tom修改以tb_開頭的表的數據。

    • 通過ACL命令實現Policy授權示例如下:

      --Bob進入項目test_project_a。
      use test_project_a; 
      --創建角色Worker。
      create role Worker; 
      --將用戶Tom添加為項目成員。
      add user RAM$Bob@aliyun.com:Tom;
      --將角色Worker綁定至用戶Tom。
      grant Worker TO RAM$Bob@aliyun.com:Tom; 
      --允許角色Worker修改項目test_project_a中以tb_開頭的表的數據。
      grant Update on table tb_* to ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
      --查看用戶Tom的授權結果。
      show grants for RAM$Bob@aliyun.com:Tom; 
      --授權結果如下。A表示允許,可以更新以tb_開頭的表的數據。
      Authorization Type: Policy
      [role/worker]
      A       projects/test_project_a/tables/tb_*: Update
    • 通過控制臺實現Policy授權示例如下:

      1. 登錄MaxCompute控制臺,在左上角選擇地域。

      2. 在左側導航欄單擊項目管理

      3. 項目管理頁面,單擊目標項目操作列的管理

      4. 角色權限頁簽,單擊新增項目級別角色

      5. 新建角色對話框,創建資源操作類(Resource)角色,填寫角色名稱和Policy授權策略。

        Policy內容如下:

        {
            "Statement":[
                {
                    "Action":[
                        "odps:Update"
                    ],
                    "Effect":"Allow",
                    "Resource":[
                        "acs:odps:*:projects/test_project_a/tables/tb_*"
                    ]
                }
            ],
            "Version":"1"
        }
      6. 角色權限頁簽,單擊新建角色操作列的成員管理,將RAM$Bob@aliyun.com:Tom添加至新建角色。

  • 示例四:撤銷Policy授權(白名單)

    基于示例三,撤銷對用戶Tom的授權。

    --Bob進入項目test_project_a。
    use test_project_a; 
    --收回用戶Tom綁定的角色Worker。
    revoke Worker from RAM$Bob@aliyun.com:Tom;
    --查看用戶Tom的授權結果。權限列表無Update權限信息。
    show grants for RAM$Bob@aliyun.com:Tom; 
  • 示例五:為具備內置角色的用戶進行精細化授權

    禁止Allen刪除項目test_project_a中的所有表。

    • 通過ACL命令實現Policy授權示例如下:

      --Bob進入項目test_project_a。
      use test_project_a; 
      --創建角色Worker。
      create role Worker; 
      --將角色Worker綁定至用戶Allen。
      grant Worker TO RAM$Bob@aliyun.com:Allen; 
      --禁止角色Worker刪除項目test_project_a中的所有表。
      grant Drop on table * to ROLE Worker privilegeproperties("policy" = "true", "allow"="false");
      --查看用戶Allen的授權結果。
      show grants for RAM$Bob@aliyun.com:Allen; 
      --授權結果如下。禁止刪除所有表。
      [roles]
      role_project_admin, worker
      
      Authorization Type: Policy
      [role/role_project_admin]
      A       projects/test_project_a: *
      A       projects/test_project_a/instances/*: *
      A       projects/test_project_a/jobs/*: *
      A       projects/test_project_a/offlinemodels/*: *
      A       projects/test_project_a/packages/*: *
      A       projects/test_project_a/registration/functions/*: *
      A       projects/test_project_a/resources/*: *
      A       projects/test_project_a/tables/*: *
      A       projects/test_project_a/volumes/*: *
      
      [role/worker]
      A       projects/test_project_a/tables/tb_*: Update
      D       projects/test_project_a/tables/*: Drop
      --AG中的A表示Allow,G表示With Grant Option,即允許對客體(Object)進行授權
      Authorization Type: ObjectCreator
      AG      projects/test_project_a/tables/local_test: All
      AG      projects/test_project_a/tables/mr_multiinout_out1: All
      AG      projects/test_project_a/tables/mr_multiinout_out2: All
      AG      projects/test_project_a/tables/ramtest: All
      AG      projects/test_project_a/tables/wc_in: All
      AG      projects/test_project_a/tables/wc_in1: All
      AG      projects/test_project_a/tables/wc_in2: All
      AG      projects/test_project_a/tables/wc_out: All
    • 通過控制臺實現Policy授權示例如下:

      1. 登錄MaxCompute控制臺,在左上角選擇地域。

      2. 在左側導航欄單擊項目管理

      3. 項目管理頁面,單擊目標項目操作列的管理

      4. 角色權限頁簽,單擊新增項目級別角色

      5. 新建角色對話框,創建資源操作類(Resource)角色,填寫角色名稱和Policy授權策略。

        Policy內容如下:

        {
            "Statement":[
                {
                    "Action":[
                        "odps:Drop"
                    ],
                    "Effect":"Deny",
                    "Resource":[
                        "acs:odps:*:projects/test_project_a/tables/*"
                    ]
                }
            ],
            "Version":"1"
        }
      6. 角色權限頁簽,單擊新建角色操作列的成員管理,將RAM$Bob@aliyun.com:Allen添加至新建角色。

  • 示例六:為具備內置角色的用戶撤銷授權

    基于示例五,撤銷對用戶Allen的授權。命令示例如下。

    --Bob進入項目test_project_a。
    use test_project_a; 
    --收回用戶Allen綁定的角色Worker。
    revoke Worker from RAM$Bob@aliyun.com:Allen;
    --查看用戶Allen的授權結果。權限列表無Drop權限信息。
    show grants for RAM$Bob@aliyun.com:Allen; 
  • 示例七:基于角色為用戶(Tom)授予查詢所有表的權限(白名單)

    • 通過ACL命令實現Policy授權示例如下:

      --Bob進入項目test_project_a。
      use test_project_a;
      --創建角色Worker。
      create role Worker;
      --將用戶Tom添加為項目成員。
      add user RAM$Bob@aliyun.com:Tom;
      --將角色Worker綁定至用戶Tom。
      grant Worker TO RAM$Bob@aliyun.com:Tom;
      --允許角色Worker查詢項目test_project_a中的所有表。
      grant Describe,select on table * to ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
      --查看用戶Tom的授權結果。
      show grants for RAM$Bob@aliyun.com:Tom;
      --授權結果如下。A表示允許,允許查詢項目test_project_a中的所有表。
      Authorization Type: Policy
      [role/worker]
      A      projects/test_project_a/tables/*: Describe | Select
    • 通過控制臺實現Policy授權示例如下:

      1. 登錄MaxCompute控制臺,在左上角選擇地域。

      2. 在左側導航欄單擊項目管理

      3. 項目管理頁面,單擊目標項目操作列的管理

      4. 角色權限頁簽,單擊新增項目級別角色

      5. 新建角色對話框,創建資源操作類(Resource)角色,填寫角色名稱和Policy授權策略。

        Policy內容如下:

        {
            "Statement":[
                {
                    "Action":[
                        "odps:Describe",
                        "odps:Select"
                    ],
                    "Effect":"Allow",
                    "Resource":[
                        "acs:odps:*:projects/test_project_a/tables/*"
                    ]
                }
            ],
            "Version":"1"
        }
      6. 角色權限頁簽,單擊新建角色操作列的成員管理,將RAM$Bob@aliyun.com:Tom添加至新建角色。

后續指引

了解Policy授權機制后,您可以根據實際業務需要執行授權相關操作:

相關文檔