本教程樣本詳細示範了如何使用 RAM Policy 控制使用者對 OSS 儲存空間和檔案夾的訪問。

在樣本中,我們首先建立一個儲存空間和檔案夾,然後使用阿里雲主帳號建立訪問管理(RAM)使用者,並通過構建不同的 RAM Policy 為這些使用者授予對所建立 OSS 儲存空間及檔案夾的增量許可權。

儲存空間和檔案夾的基本概念

阿里雲 OSS 的資料模型為扁平型結構,所有檔案都直接隸屬於其對應的儲存空間。因此,OSS 缺少檔案系統中類似於目錄與子檔案夾的階層。但是,您可以在 OSS 控制台上類比資料夾階層。在該控制台中,您可以按檔案夾對相關檔案進行分組、分類和管理,如下圖所示。

OSS 提供使用索引值(key)對格式的分布式Object Storage Service服務。使用者根據其唯一的key(對象名)檢索對象的內容。例如,名為 example-company 的儲存空間有三個檔案夾:Development、 MarketingPrivate,以及一個對象 oss-dg.pdf

  • 在建立 Development 檔案夾時,控制台會建立一個 key 為Development/的對象。注意,檔案夾的 key 包括分隔字元 /
  • 當您將名為 ProjectA.docx 的對象上傳到 Development 檔案夾中時,控制台會上傳該對象並將其key設定為Development/ProjectA.docx

    在該key中,Development為首碼,而/為分隔字元。您可以從儲存空間中擷取具有特定首碼和分隔字元的所有對象的列表。在控制台中,單擊 Development 檔案夾時,控制台會列出檔案夾中的對象,如下圖所示。



    说明 當控制台列出 example-company 儲存空間中的 Development 檔案夾時,它會向 OSS 發送一個用於指定首碼 Development 和分隔字元/的請求。控制台的響應與檔案系統類似,會顯示資料夾清單。上例說明,儲存空間 example-company 有三個對象,其 key 分別為 Development/Alibaba Cloud.pdfDevelopment/ProjectA.docxDevelopment/ProjectB.docx

控制台通過對象的 key 推斷邏輯階層。當您建立對象的邏輯階層時,您可以管理對個別檔案夾的訪問,如本教程後面描述的那樣。

在本教程開始之前,您還需要知道“根級”儲存空間內容的概念。假設 example-company 儲存空間包含以下對象:

  • Development/Alibaba Cloud.pdf
  • Development/ProjectA.docx
  • Development/ProjectB.docx
  • Marketing/data2016.xlsx
  • Marketing/data2016.xlsx
  • Private/2017/images.zip
  • Private/2017/promote.pptx
  • oss-dg.pdf

這些對象的key構建了一個以 Development、MarketingPrivate 作為根級檔案夾並以 oss-dg.pdf 作為根級對象的邏輯階層。當您單擊 OSS 控制台中的儲存空間名時,控制台會將一級首碼和一個分隔字元(Development/、Marketing/Private/)顯示為根級檔案夾。對象 oss-dg.pdf 沒有首碼,因此顯示為根層級項。



OSS 的請求和響應邏輯

在授予許可權之前,我們需要清楚,當使用者單擊某個儲存空間的名字時控制台向 OSS 發送的是什麼請求、OSS 返回的是什麼響應,以及控制台如何解析該響應。

當使用者單擊某個儲存空間名時,控制台會將 GetBucket 請求發送至 OSS。此請求包括以下參數:

  • prefix,其值為空白字串。
  • delimiter,其值為/

請求樣本如下所示:

GET /?prefix=&delimiter=/ HTTP/1.1
Host: example-company.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 24 Feb 2012 08:43:27 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:DNrnx7xHk3sgysx7I8U9I9IY1vY=

OSS 返回的響應包括ListBucketResult元素:

HTTP/1.1 200 OK
x-oss-request-id: 534B371674E88A4D8906008B
Date: Fri, 24 Feb 2012 08:43:27 GMT
Content-Type: application/xml
Content-Length: 712
Connection: keep-alive
Server: AliyunOSS
<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns=¡±http://doc.oss-cn-hangzhou.aliyuncs.com¡±>
<Name>example-company</Name>
<Prefix></Prefix>
<Marker></Marker>
<MaxKeys>100</MaxKeys>
<Delimiter>/</Delimiter>
    <IsTruncated>false</IsTruncated>
    <Contents>
        <Key>oss-dg.pdf</Key>
        ...
    </Contents>
   <CommonPrefixes>
        <Prefix>Development</Prefix>
   </CommonPrefixes>
      <CommonPrefixes>
        <Prefix>Marketing</Prefix>
   </CommonPrefixes>
      <CommonPrefixes>
        <Prefix>Private</Prefix>
   </CommonPrefixes>
</ListBucketResult>

由於 oss-dg.pdf 不包含/分隔字元,因此 OSS 在<Contents/>元素中返回該 key。儲存空間 example-company 中的所有其他 key 都包含/分隔字元,因此 OSS 會將這些 key 分組,並為每個首碼值 Development/、Marketing/ Private/ 返回一個 <CommonPrefixes/> 元素。該元素是一個字串,包含從這些 key 的第一個字元開始到第一次出現指定的/分隔字元之間的字元。

控制台會解析此結果並顯示如下的根層級項:



現在,如果使用者單擊 Development 檔案夾,控制台會將 GetBucket 請求發送至 OSS。此請求包括以下參數:

  • prefix,其值為 Development/
  • delimiter,其值為/

請求樣本如下所示:

GET /?prefix=Development/&delimiter=/ HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 24 Feb 2012 08:43:27 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:DNrnx7xHk3sgysx7I8U9I9IY1vY=

作為響應,OSS 返回以指定首碼開頭的 key:

HTTP/1.1 200 OK
x-oss-request-id: 534B371674E88A4D8906008B
Date: Fri, 24 Feb 2012 08:43:27 GMT
Content-Type: application/xml
Content-Length: 712
Connection: keep-alive
Server: AliyunOSS
<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns=¡±http://doc.oss-cn-hangzhou.aliyuncs.com¡±>
<Name>example-company</Name>
<Prefix>Development/</Prefix>
<Marker></Marker>
<MaxKeys>100</MaxKeys>
<Delimiter>/</Delimiter>
    <IsTruncated>false</IsTruncated>
    <Contents>
        <Key>ProjectA.docx</Key>
        ...
    </Contents>
    <Contents>
        <Key>ProjectB.docx</Key>
        ...
    </Contents>
</ListBucketResult>

控制台會解析此結果並顯示如下的 key:



教程樣本

本教程樣本如下所示:

  • 建立一個儲存空間 example-company,然後向其中添加三個檔案夾(DevelopmentMarketingPrivate)。
  • 您有 Anne 和 Leo 兩個使用者。您希望 Anne 只能訪問 Development 檔案夾而 Leo 則只能訪問 Marketing 檔案夾,並且希望將 Private 檔案夾保持私人。在教程樣本中,通過建立存取控制(RAM)使用者(Anne 和 Leo)來管理存取權限,並授予他們必要的許可權。
  • RAM 還支援建立使用者組並授予適用於組中所有使用者的組層級許可權。這有助於更好地系統管理權限。在本樣本中,Anne 和 Leo 都需要一些公用許可權。因此,您還要建立一個名為 Staff 的組,然後將 Anne 和 Leo 添加到該組中。首先,您需要給該組分配策略授予許可權。然後,將策略分配給特定使用者,添加特定使用者的許可權。
说明 本教程樣本使用 example-company 作為儲存空間名、使用 Anne 和 Leo 作為 RAM 使用者名稱並使用 Staff 作為組名。由於阿里雲 OSS 要求儲存空間名全域唯一,所以您需要用自己的儲存空間名稱替換本教程中的儲存空間名。

樣本準備

本樣本使用阿里雲主帳號建立 RAM 使用者。最初,這些使用者沒有任何許可權。您將逐步授予這些使用者執行特定 OSS 操作的許可權。為了測試這些許可權,您需要使用每個使用者的 RAM 帳號登入到控制台。當您作為主帳號所有者逐步授予許可權並作為 RAM 使用者測試許可權時,您需要每次使用不同帳號進行登入和登出。您可以使用一個瀏覽器來執行此測試。如果您可以使用兩個不同的瀏覽器,則該測試過程用時將會縮短:一個瀏覽器用於使用主帳號串連到阿里雲控制台,另一個瀏覽器用於使用 RAM 帳號進行串連。

要使用您的主帳號登入到阿里雲控制台。 RAM 使用者不能使用相同的連結登入。他們必須使用 RAM 使用者登入連結。作為主帳號所有者,您可以向 RAM 使用者提供此連結。

说明 有關 RAM 的詳細資料,請參見使用 RAM 使用者帳號登入
為 RAM 使用者提供登入連結:
  1. 使用主帳號登入 RAM 控制台
  2. 在左側導覽列中,單擊概覽
  3. 帳號管理地區,將 RAM 使用者登入地址的 URL 提供給 RAM 使用者,以便其使用 RAM 使用者名稱和密碼登入控制台。

步驟 1:建立儲存空間

在此步驟中,您可以使用主帳號登入到 OSS 控制台、建立儲存空間、將檔案夾(Development、Marketing、Private)添加到儲存空間中,並在每個檔案夾中上傳一個或兩個範例文件。

  1. 使用主帳號登入 OSS 控制台
  2. 建立名為 example-company 的儲存空間。

    有關詳細過程,請參見 OSS 控制台使用者指南中的建立儲存空間

  3. 將一個檔案上傳到儲存空間中。

    本樣本假設您將檔案 oss-dg.pdf 上傳到儲存空間的根層級。您可以用不同的檔案名稱上傳自己的檔案。

    有關詳細過程,請參見 OSS 控制台使用者指南中的上傳檔案

  4. 添加名為 Development、Marketing Private 的三個檔案夾。

    有關詳細過程,請參見 OSS 控制台使用者指南 中的建立檔案夾

  5. 將一個或兩個檔案上傳到每個檔案夾中。

    本例假設您將具有以下對象鍵的對象上傳到儲存空間中:

    • Development/Alibaba Cloud.pdf
    • Development/ProjectA.docx
    • Development/ProjectB.docx
    • Marketing/data2016.xlsx
    • Marketing/data2016.xlsx
    • Private/2017/images.zip
    • Private/2017/promote.pptx
    • oss-dg.pdf

步驟 2:建立 RAM 使用者和組

在此步驟中,您使用 RAM 控制台將兩個 RAM 使用者 Anne 和 Leo 添加到主帳號中。您還將建立一個名為 Staff 的組,然後將這兩個使用者添加到該組中。
说明 在此步驟中,不要分配任何授予這些使用者權限的策略。在以下步驟中,您將逐步為其授予許可權。

有關建立 RAM 使用者的詳細過程,請參見 RAM 快速入門中的建立 RAM 使用者。請為每個 RAM 使用者建立登入密碼。

有關建立組的詳細過程,請參見 RAM 使用者指南中的建立組

步驟 3:確認 RAM 使用者沒有任何許可權

如果您使用兩個瀏覽器,現在可以在另一個瀏覽器中使用其中一個 RAM 使用者帳號登入到控制台。

  1. 開啟 RAM 使用者登入連結,並用 Anne 或 Leo 的帳號登入到 RAM 控制台。
  2. 開啟 OSS 控制台。

    您發現控制台中沒有任何儲存空間,這意味著 Anne 不具有對儲存空間 example-company 的任何許可權。

步驟 4:授予組層級許可權

我們希望 Anne 和 Leo 都能執行以下操作:

  • 列出主帳號所擁有的所有儲存空間。

    為此,Anne 和 Leo 必須具有執行 oss:ListBuckets 操作的許可權。

  • 列出 example-company 儲存空間中的根層級項、檔案夾和對象。

    為此,Anne 和 Leo 必須具有對 example-company 儲存空間執行 oss:ListObjects 操作的許可權。

步驟 4.1.授予列出所有儲存空間的許可權

在此步驟中,建立一個授予使用者最低許可權的策略。憑藉最低許可權,使用者可列出主帳號所擁有的所有儲存空間。您還將此策略分配給 Staff 組,以便授予獲得主帳號擁有的儲存空間列表的組許可權。

  1. 使用主帳號登入 RAM 控制台
  2. 建立策略 AllowGroupToSeeBucketListInConsole
    1. 在左側瀏覽窗格中,單擊許可權管理 > 權限原則管理 > 建立權限原則
    2. 策略名稱欄位中,輸入 AllowGroupToSeeBucketListInConsole
    3. 選擇配置模式指令碼配置
    4. 策略內容欄位中,複製並粘貼以下策略。
      {
      "Version": "1",
      "Statement": [
       {
         "Effect": "Allow",
             "Action": [
               "oss:ListBuckets",
               "oss:GetBucketStat",
                "oss:GetBucketInfo",
               "oss:GetBucketAcl"
             ],
         "Resource": [
           "acs:oss:*:*:*"
         ]
       }
      ]
      }
      说明
      • RAM 策略為 JSON 格式。各欄位定義如下:
        • Statement:對象數組,每個對象使用名/值對的集合來描述許可權。
        • Effect:決定是允許還是拒絕特定的許可權。
        • Action:指定存取權限的類型。在本策略中,oss:ListBuckets 是預定義的 OSS 操作,可返回經過身分識別驗證的寄件者所擁有的所有儲存空間的列表。
      • 推薦您使用 RAM 策略編輯器快速產生 RAM 策略。更詳細的 RAM 策略介紹請參見如何構建 RAM Policy
  3. AllowGroupToSeeBucketListInConsole 策略分配給 Staff 組。

    有關分配策略的詳細過程,請參見 RAM 快速入門為 RAM 使用者授權中的“為使用者所屬的使用者組授權” 。

    可以將策略分配給 RAM 控制台中的 RAM 使用者和組。在本例中,我們將策略分配給組,因為我們希望 Anne 和 Leo 都能夠列出這些儲存空間。

  4. 測試許可權。
    1. 開啟 RAM 使用者登入連結,並用 Anne 或 Leo 的帳號登入到 RAM 控制台。
    2. 開啟 OSS 控制台。

      控制台列出所有儲存空間。

    3. 單擊 example-company 儲存空間,然後單擊檔案選項卡。

      此時將顯示一個訊息框,表明您沒有相應的存取權限。



步驟 4.2.授予列出儲存空間根級內容的許可權

在此步驟中,您授予許可權,允許所有使用者列出儲存空間 example-company 中的所有項目。當使用者在 OSS 控制台中單擊 example-company 時,能夠看到儲存空間中的根層級項。



  1. 使用主帳號登入RAM 控制台
  2. 用以下策略取代分配給 Staff 組的現有策略 AllowGroupToSeeBucketListInConsole,該策略還允許 oss:ListObjects 操作。請用您的儲存空間名替換策略資源中的 example-company。

    有關詳細過程,請參見 RAM 使用者指南中授權策略的“修改自訂授權策略”部分。注意,您最多可對 RAM 策略進行五次修改。如果超過了五次,則需要刪除該策略並建立一個新的策略,然後再次將新策略分配給 Staff 組。

    {
       "Version": "1",
       "Statement": [
         {
           "Effect": "Allow",
           "Action": [
             "oss:ListBuckets",
             "oss:GetBucketStat",
             "oss:GetBucketInfo",
             "oss:GetBucketAcl"
           ],
           "Resource": [
             "acs:oss:*:*:*"
           ],
           "Condition": {}
         },
         {
           "Effect": "Allow",
           "Action": [
             "oss:ListObjects"
           ],
           "Resource": [
             "acs:oss:*:*:example-company"
           ],
           "Condition": {
             "StringLike": {
               "oss:Prefix": [
                 ""
               ],
               "oss:Delimiter": [
                 "/"
               ]
             }
           }
         }
       ]
     }
    说明
    • 要列出儲存空間內容,使用者需要調用 oss:ListObjects 操作的許可權。為了確保使用者僅看到根級內容,我們添加了一個條件:使用者必須在請求中指定一個空首碼,也就是說,他們不能單擊任何根級檔案夾。我們還通過要求使用者請求包含分隔字元參數和值 / 來添加需要檔案夾樣式訪問的條件。
    • 當使用者登入到 OSS 控制台時,控制台檢查使用者的身份是否有訪問 OSS 服務的許可權。要在控制台中支援儲存空間操作,我們還需要添加 oss:GetBucketAcl 操作。
  3. 測試更新的許可權。
    1. 開啟 RAM 使用者登入連結,並用 Anne 或 Leo 的帳號登入到 RAM 控制台。
    2. 開啟 OSS 控制台。

      控制台列出所有儲存空間。

    3. 單擊 example-company 儲存空間,然後單擊檔案選項卡。

      控制台列出所有根層級項。



    4. 單擊任何檔案夾或對象 oss-dg.pdf

      此時將顯示一個訊息框,表明您沒有相應的存取權限。

組策略摘要

添加組策略的最終結果是授予 RAM 使用者 Anne 和 Leo 以下最低許可權:

  • 列出主帳號所擁有的所有儲存空間。
  • 查看 example-company 儲存空間中的根層級項。

然而,他們可以進行的操作仍然有限。在以下部分中,我們將授予使用者以下特定許可權:

  • 允許 Anne 在 Development 檔案夾中擷取和放入對象。
  • 允許 Leo 在 Finance 檔案夾中擷取和放入對象。

對於使用者特定的許可權,您需要將策略分配給特定使用者,而非分配給組。以下部分授予 Anne 在 Development 檔案夾中操作的許可權。您可以重複這些步驟,授予 Leo 在 Finance 檔案夾中進行類似操作的許可權。

步驟 5:授予 RAM 使用者 Anne 特定許可權

在此步驟中,我們向 Anne 授予額外的許可權,使她可以看到 Development 檔案夾的內容,並將對象放入檔案夾中。

步驟 5.1.授予 RAM 使用者 Anne 許可權以列出 Development 檔案夾內容

若要 Anne 能夠列出 Development 檔案夾內容,您必須為其分配策略。該策略必須能夠授予其對 example-company 儲存空間執行 oss:ListObjects 操作的許可權,還必須包括要求使用者在請求中指定首碼 Development/ 的條件。

  1. 使用主帳號登入RAM 控制台
  2. 建立策略 AllowListBucketsIfSpecificPrefixIsIncluded,授予 RAM 使用者 Anne 許可權以列出 Development 檔案夾內容。
    1. 在左側瀏覽窗格中,單擊許可權管理 > 權限原則管理 > 建立權限原則
    2. 策略名稱欄位中,輸入 AllowGroupToSeeBucketListInConsole
    3. 選擇配置模式指令碼配置
    4. 策略內容欄位中,複製並粘貼以下策略。
      {
      "Version": "1",
      "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "oss:ListObjects"
         ],
         "Resource": [
           "acs:oss:*:*:example-company"
         ],
         "Condition": {
           "StringLike": {
             "oss:Prefix": [
               "Development/*"
             ]
           }
         }
       }
      ]
      }
  3. 將策略分配給 RAM 使用者 Anne。

    有關分配策略的詳細過程,請參見 RAM 快速入門中的為 RAM 使用者授權

  4. 測試 Anne 的許可權。
    1. 開啟 RAM 使用者登入連結,並用 Anne 的帳號登入到 RAM 控制台。
    2. 開啟 OSS 控制台,控制台列出所有儲存空間。
    3. 單擊 example-company 儲存空間,然後單擊檔案選項卡,控制台列出所有根層級項。
    4. 單擊 Development/ 檔案夾。控制台列出檔案夾中的對象。
步驟 5.2 授予 RAM 使用者 Anne 在 Development 檔案夾中擷取和放入對象的許可權。

若要 Anne 能夠在 Development 檔案夾中擷取和放入對象,您必須授予她調用 oss:GetObject oss:PutObject 操作的許可權,包括使用者必須在請求中指定首碼 Development/ 的條件。

  1. 使用主帳號登入 RAM 控制台
  2. 用以下策略取代您在之前步驟中建立的策略 AllowListBucketsIfSpecificPrefixIsIncluded

    有關詳細過程,請參見 RAM 使用者指南中授權策略的“修改自訂授權策略”部分。注意,您最多可對 RAM 策略進行五次修改。如果超過了五次,則需要刪除該策略並建立一個新的策略,然後再次將新策略分配給 Staff 組。

    {
       "Version": "1",
       "Statement": [
         {
           "Effect": "Allow",
           "Action": [
             "oss:ListObjects"
           ],
           "Resource": [
             "acs:oss:*:*:example-company"
           ],
           "Condition": {
             "StringLike": {
               "oss:Prefix": [
                 "Development/*"
               ]
             }
           }
         },
         {
           "Effect": "Allow",
           "Action": [
             "oss:GetObject",
             "oss:PutObject",
             "oss:GetObjectAcl"
           ],
           "Resource": [
             "acs:oss:*:*:example-company/Development/*"
           ],
           "Condition": {}
         }
       ]
     }
    说明 當使用者登入到 OSS 控制台時,控制台檢查使用者的身份是否有訪問 OSS 服務的許可權。要在控制台中支援儲存空間操作,我們還需要添加 oss:GetObjectAcl 操作。
  3. 測試更新的策略。
    1. 開啟 RAM 使用者登入連結,並用 Anne 的帳號登入到 RAM 控制台。
    2. 開啟 OSS 控制台。

      控制台列出所有儲存空間。

    3. 在 OSS 控制台中,確認 Anne 現在可以在 Development 檔案夾中添加對象並下載對象。
步驟 5.3 顯式拒絕 RAM 使用者 Anne 訪問儲存空間中任何其他檔案夾的許可權

RAM 使用者 Anne 現在可以在 example-company 儲存空間中列出根級內容,並將對象放入 Development 檔案夾中。如果要嚴格限制存取權限,您可以顯式拒絕 Anne 對儲存空間中任何其他檔案夾的訪問。如果有授予 Anne 訪問儲存空間中任何其他檔案夾的其他策略,則此顯式策略將替代這些許可權。

您可以將以下語句添加到 RAM 使用者 Anne 的策略 AllowListBucketsIfSpecificPrefixIsIncluded,以要求 Anne 發送到 OSS 的所有請求包含首碼參數,該參數的值可以是 Development/* 或Null 字元串。
{
      "Effect": "Deny",
      "Action": [
        "oss:ListObjects"
      ],
      "Resource": [
        "acs:oss:*:*:example-company"
      ],
      "Condition": {
        "StringNotLike": {
          "oss:Prefix": [
            "Development/*",
            ""
          ]
        }
      }
    }
按照之前的步驟更新您為 RAM 使用者 Anne 建立的策略 AllowListBucketsIfSpecificPrefixIsIncluded。複製並粘貼以下策略以替換現有策略。
{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "oss:ListObjects"
      ],
      "Resource": [
        "acs:oss:*:*:example-company"
      ],
      "Condition": {
        "StringLike": {
          "oss:Prefix": [
            "Development/*"
          ]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "oss:GetObject",
        "oss:PutObject",
        "oss:GetObjectAcl"
      ],
      "Resource": [
        "acs:oss:*:*:example-company/Development/*"
      ],
      "Condition": {}
    },
    {
      "Effect": "Deny",
      "Action": [
        "oss:ListObjects"
      ],
      "Resource": [
        "acs:oss:*:*:example-company"
      ],
      "Condition": {
        "StringNotLike": {
          "oss:Prefix": [
            "Development/*",
            ""
          ]
        }
      }
    }
  ]
}

步驟 6:授予 RAM 使用者 Leo 特定許可權

現在,您希望授予 Leo 訪問 Marketing 檔案夾的許可權。請遵循之前用於向 Anne 授予許可權的步驟,但應將 Development 檔案夾替換為 Marketing 檔案夾。有關詳細過程,請參見步驟 5:授予 RAM 使用者 Anne 特定許可權。

步驟 7:確保 Private 檔案夾安全

在本例中,您僅擁有兩個使用者。您在組層級授予兩個使用者所有所需的最小許可權,只有當您真正需要單個使用者層級上的許可權時,才授予使用者層級許可權。此方法有助於最大限度地減少系統管理權限的工作量。隨著使用者數量的增加,我們希望確保不意外地授予使用者對 Private 檔案夾的許可權。因此,我們需要添加一個顯式拒絕訪問 Private 檔案夾的策略。顯式拒絕策略會取代任何其他許可權。若要確保 Private 檔案夾保持私人,可以向組策略添加以下兩個拒絕語句:

  • 添加以下語句以顯式拒絕對 Private 檔案夾 (example-company/Private/*) 中的資源執行任何操作。
    {
        "Effect": "Deny",
        "Action": [
          "oss:*"
        ],
        "Resource": [
          "acs:oss:*:*:example-company/Private/*"
        ],
        "Condition": {}
      }
  • 您還要在請求指定了 Private/prefix 時拒絕執行 ListObjects 操作的許可權。在控制台中,如果 Anne 或 Leo 單擊 Private 檔案夾,則此策略將導致 OSS 返回錯誤響應。
    {
        "Effect": "Deny",
        "Action": [
          "oss:ListObjects"
        ],
        "Resource": [
          "acs:oss:*:*:*"
        ],
        "Condition": {
          "StringLike": {
            "oss:Prefix": [
              "Private/"
            ]
          }
        }
      }
  • 用包含前述拒絕語句的更新策略取代 Staff 組策略 AllowGroupToSeeBucketListInConsole。在應用程式更新策略後,組中的任何使用者都不能訪問您的儲存空間中的 Private 檔案夾。

    1. 使用主帳號登入RAM 控制台
    2. 用以下策略取代分配給 Staff 組的現有策略 AllowGroupToSeeBucketListInConsole。請用您的儲存空間名替換策略資源中的 example-company。
      {
      "Version": "1",
      "Statement": [
       {
         "Effect": "Allow",
             "Action": [
               "oss:ListBuckets",
               "oss:GetBucketStat",
               "oss:GetBucketInfo",
               "oss:GetBucketAcl"
             ],
         "Resource": [
           "acs:oss:*:*:*"
         ],
         "Condition": {}
       },
       {
         "Effect": "Allow",
         "Action": [
           "oss:ListObjects"
         ],
         "Resource": [
           "acs:oss:*:*:example-company"
         ],
         "Condition": {
           "StringLike": {
             "oss:Prefix": [
                ""
              ],
             "oss:Delimiter": [
               "/"
             ]
           }
         }
       },
       {
         "Effect": "Deny",
         "Action": [
           "oss:*"
         ],
         "Resource": [
           "acs:oss:*:*:example-company/Private/*"
         ],
         "Condition": {}
       },
       {
         "Effect": "Deny",
         "Action": [
           "oss:ListObjects"
         ],
         "Resource": [
           "acs:oss:*:*:*"
         ],
         "Condition": {
           "StringLike": {
             "oss:Prefix": [
               "Private/"
             ]
           }
         }
       }
      ]
      }

清理

要進行清理,您需要在 RAM 控制台中刪除使用者 Anne 和 Leo。

有關詳細過程,請參見 RAM 使用者指南中使用者的“刪除 RAM 使用者”部分。

為了確保您不再因儲存而繼續被收取費用,您還需要刪除為本樣本建立的對象和儲存空間。