全部產品
Search
文件中心

Object Storage Service:通過Bucket Policy設定授權策略

更新時間:Jan 17, 2026

Bucket Policy是附加在儲存空間(Bucket)上的基於資源的存取控制策略。採用JSON格式精確定義訪問規則:指定主體(Principal)在滿足特定條件(Condition)時,對目標資源(Resource)可執行檔操作(Action)。作為實現跨帳號授權、匿名存取控制和基於網路來源等複雜訪問限制的核心機制,Bucket Policy提供了細粒度的許可權管理能力。

工作原理

Bucket Policy採用基於資源的授權模式,許可權評估嚴格遵循拒絕優先原則。OSS收到訪問請求後,系統會綜合評估所有相關策略(包括Bucket Policy和RAM Policy)。任何一條策略的明確拒絕(Deny)規則都會立即阻止請求執行,該優先順序高於所有允許(Allow)策略。

  • 策略對Bucket Owner的生效規則:

    • 授權使用者設定為萬用字元(*)且不包含Condition時,Bucket Policy僅對Bucket Owner以外的所有使用者生效

    • 授權使用者設定為萬用字元(*)且包含Condition時,Bucket Policy對包含Bucket Owner在內的所有使用者生效(包括主帳號)

  • 多條Bucket Policy規則疊加原則:

    為同一使用者配置多條Bucket Policy規則時,該使用者擁有的許可權是所有Policy規則的疊加。當這些Bucket Policy中包含拒絕存取權限時,遵循拒絕存取權限優先原則。

配置Bucket的授權策略

OSS提供圖形化和文法策略兩種配置方式,滿足不同情境的配置需求。

  • 圖形策略方式:提供直觀的操作體驗,通過表單化配置覆蓋常見授權情境,降低配置門檻。

  • 文法策略方式:採用JSON格式編寫完整策略,支援所有進階功能和複雜條件組合,提供最大的配置靈活性。

圖形策略方式

  1. 前往Bucket列表,單擊目標Bucket。

  2. 在左側功能表列單擊許可權控制 > Bucket授權策略

  3. 選擇按圖形策略添加,然後單擊新增授權,配置授權內容。

    配置項

    說明

    授權資源

    選擇授權對象是整個Bucket還是指定資源

    資源路徑

    • 授權資源選擇整個Bucket時,資源路徑bucket-name/*

    • 授權資源選擇指定資源時,填寫待授權資源的目錄或單個Object,支援添加多條記錄。

    授權用戶

    指定被授權對象。

    • 所有帳號(*):授權對象為任何人(包括匿名訪問者)。

    • 子帳號:選擇當前阿里雲帳號下的RAM使用者。

      當前登入帳號必須是阿里雲主帳號或擁有此Bucket系統管理權限及RAM控制台ListUsers許可權的RAM使用者,否則無法查看當前帳號的RAM使用者列表。

    • 其他帳號:填寫其他待授權帳號、子帳號的UID或以arn:sts開頭的臨時授權使用者(如arn:sts::1798************:assumed-role/role-name/session-name)。支援授權給多個使用者,一行填寫一個。

      當被授權的對象是RAM角色時,該帳號無法通過OSS控制台訪問授權資源,需通過命令列工具ossutil、SDK、API等方式進行訪問。

    授權操作

    • 簡單設定:選擇常見的授權操作組合,可選的設定項包括唯讀(不包含ListObject操作)唯讀(包含ListObject操作)讀/寫完全控制拒絕訪問

      說明

      為確保OSS-HDFS服務使用者能正常訪問.dlsdata/目錄及其下的任意Object,在為開通了OSS-HDFS服務的Bucket配置Bucket Policy時,禁止設定拒絕訪問的授權操作。

    • 進階設定:自訂授權效力允許拒絕)和授權操作

    條件(可選)

    設定授權的生效條件。

    • 訪問方式:可選項包括HTTPSHTTP。勾選後,僅當以選擇的方式訪問時,策略生效。

    • IP =:填寫IP列表。勾選後,僅當訪問IP在填寫的IP列表內時,策略生效。

    • IP ≠:填寫IP列表。勾選後,僅當訪問IP不在填寫的IP列表內時,策略生效。

    • VPC =:選擇當前帳號的VPC或填寫其他帳號的VPC。勾選後,僅當從指定的VPC訪問時,策略生效。

    • VPC ≠:選擇當前帳號的VPC或填寫其他帳號的VPC。勾選後,僅當不從指定的VPC訪問時,策略生效。

    當配置多個條件時,所有條件必須同時滿足(AND關係),策略才會生效。

  4. 確認授權配置無誤後,單擊確定,應用Bucket Policy。

文法策略方式

  1. 前往Bucket列表,單擊目標Bucket。

  2. 在左側功能表列單擊許可權控制 > Bucket授權策略

  3. 選擇按文法策略添加,然後單擊編輯,在編輯框內輸入JSON格式的授權策略。

    樣本授權策略:對於使用者20214760404935xxxx,如果訪問請求不是來自VPC網路vpc-t4nlw426y44rd3iq4xxxx,則拒絕其對example-bucket的所有操作。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Deny",
                "Action": "oss:*",
                "Principal": [
                    "20214760404935xxxx"
                ],
                "Resource": [
                    "acs:oss:*:174649585760xxxx:example-bucket",
                    "acs:oss:*:174649585760xxxx:example-bucket/*"
                ],
                "Condition": {
                    "StringNotEquals": {
                        "acs:SourceVpc": "vpc-t4nlw426y44rd3iq4xxxx"
                    }
                }
            }
        ]
    }

    完整的授權策略包含Version(版本號碼)和Statement(授權語句)。

    • Version:權限原則版本,固定為1,不允許修改。

    • Statement:策略語句的主體,包含一條或多條具體的授權/拒絕規則。每條授權語句包含Effect(授權效力)、Action(授權操作)、Principal(授權主體)、Resource(授權資源)和Condition(授權條件)。

      策略元素

      說明

      樣本授權策略中的含義

      Effect

      策略的效力,可選值為Allow(允許)或Deny(拒絕)。

      拒絕請求。

      Action

      對資源執行的具體操作,支援使用萬用字元*

      拒絕所有OSS操作(oss:*)。

      Principal

      策略作用的主體(使用者、帳號、角色等)。

      當Principal欄位配置為空白列表(即Principal:[])時,其行為與配置為所有帳號(即Principal:["*"])完全相同。

      策略僅對RAM使用者20214760404935xxxx生效。

      Resource

      策略作用的資源範圍。

      策略作用於example-bucket本身及其下的所有對象檔案。

      Condition

      策略生效的條件。

      當配置多個條件時,所有條件必須同時滿足(AND關係),策略才會生效。

      僅當請求的來源VPC不等於vpc-t4nlw426y44rd3iq4xxxx時,此Deny策略才生效。

      完整的授權元素列表請參見OSS授權文法與元素

  4. 確認授權策略無誤後,單擊儲存,根據頁面提示儲存授權策略。

配置向量Bucket的授權策略

向量Bucket目前只支援文法策略方式配置Bucket Policy。

  1. 前往向量Bucket列表,單擊目標向量Bucket。

  2. 在左側功能表列單擊許可權控制 > Bucket授權策略

  3. 單擊編輯,在編輯框內輸入JSON格式的授權策略。

    樣本授權策略:對於vector-bucket-example中的索引表indextest,授予使用者20816353761158****讀寫向量資料的許可權。

    {
      "Version": "1",
      "Statement": [{
        "Effect": "Allow",
        "Action": [
          "oss:PutVectors",
          "oss:GetVectors"
        ],
        "Principal": [
          "20816353761158****"
        ],
        "Resource": [
          "acs:ossvector:*:*:vector-bucket-example/indextest"
        ]
      }]
    }

    完整的授權策略包含Version(版本號碼)和Statement(授權語句)。

    • Version:權限原則版本,固定為1,不允許修改。

    • Statement:策略語句的主體,包含一條或多條具體的授權/拒絕規則。每條授權語句包含Effect(授權效力)、Action(授權操作)、Principal(授權主體)、Resource(授權資源)和Condition(授權條件)。

      策略元素

      說明

      樣本授權策略中的含義

      Effect

      策略的效力,可選值為Allow(允許)或Deny(拒絕)。

      允許請求。

      Action

      對資源執行的具體操作,支援使用萬用字元*

      讀寫向量資料。

      Principal

      策略作用的主體(使用者、帳號、角色等)。

      當Principal欄位配置為空白列表(即Principal:[])時,其行為與配置為所有帳號(即Principal:["*"])完全相同。

      策略僅對RAM使用者20816353761158****生效。

      Resource

      策略作用的資源範圍。

      策略作用於vector-bucket-example中的索引表indextest

      Condition

      策略生效的條件。

      當配置多個條件時,所有條件必須同時滿足(AND關係),策略才會生效。

      無。

      完整的授權元素列表請參見OSS授權文法與元素

  4. 確認授權策略無誤後,單擊儲存,根據頁面提示儲存授權策略。

常見授權情境

以下情境展示了Bucket Policy在實際業務中的典型應用,涵蓋許可權授予、訪問限制和安全控制等多種需求。每個情境提供完整的策略配置樣本,可根據實際需求進行調整。

情境1:授予指定RAM使用者讀寫權限

當需要允許團隊成員或合作方的指定成員上傳、下載、管理儲存空間中的檔案時,可通過Bucket Policy為對應的RAM使用者統一授予許可權。以下樣本授予指定RAM使用者(UID為27737962156157xxxx20214760404935xxxx)對目標儲存空間(example-bucket)的讀寫權限。

說明

由於以下策略未授予RAM使用者列舉儲存空間的許可權,指定RAM使用者無法在Bucket列表頁面查看所有Bucket並點擊進入目標Bucket。指定RAM使用者可在控制台左側功能表列的我收藏的路徑 > +添加並訪問目標Bucket。

{
    "Version":"1",
    "Statement":[
        {
            "Effect":"Allow",
            "Action":[
                "oss:GetObject",
                "oss:PutObject",
                "oss:GetObjectAcl",
                "oss:PutObjectAcl",
                "oss:AbortMultipartUpload",
                "oss:ListParts",
                "oss:RestoreObject",
                "oss:GetVodPlaylist",
                "oss:PostVodPlaylist",
                "oss:PublishRtmpStream",
                "oss:ListObjectVersions",
                "oss:GetObjectVersion",
                "oss:GetObjectVersionAcl",
                "oss:RestoreObjectVersion"
            ],
            "Principal":[
                "27737962156157xxxx",
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ]
        },
        {
            "Effect":"Allow",
            "Action":[
                "oss:ListObjects"
            ],
            "Principal":[
                "27737962156157xxxx",
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket"
            ],
            "Condition":{
                "StringLike":{
                    "oss:Prefix":[
                        "*"
                    ]
                }
            }
        }
    ]
}

情境2:授予指定RAM使用者對指定目錄的唯讀許可權

當需要保護儲存空間中的特定專案檔不被篡改,但允許相關項目成員讀取這些檔案時,可為對應的RAM使用者授予唯讀許可權。以下樣本授予指定RAM使用者(UID為20214760404935xxxx)對目標儲存空間(example-bucket)下指定目錄(首碼為hangzhou/2020shanghai/2015)的唯讀許可權。

說明

由於以下策略未授予RAM使用者列舉儲存空間的許可權,指定RAM使用者無法在Bucket列表頁面查看所有Bucket並點擊進入目標Bucket。指定RAM使用者可在控制台左側功能表列的我收藏的路徑 > +添加並訪問目標Bucket。

{
    "Version":"1",
    "Statement":[
        {
            "Action":[
                "oss:GetObject",
                "oss:GetObjectAcl",
                "oss:GetObjectVersion",
                "oss:GetObjectVersionAcl"
            ],
            "Effect":"Allow",
            "Principal":[
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/hangzhou/2020/*",
                "acs:oss:*:174649585760xxxx:example-bucket/shanghai/2015/*"
            ]
        },
        {
            "Action":[
                "oss:ListObjects",
                "oss:ListObjectVersions"
            ],
            "Condition":{
                "StringLike":{
                    "oss:Prefix":[
                        "hangzhou/2020/*",
                        "shanghai/2015/*"
                    ]
                }
            },
            "Effect":"Allow",
            "Principal":[
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket"
            ]
        }
    ]
}

情境3:授予指定RAM使用者查看儲存空間並列舉檔案的許可權

當需要讓團隊或合作方的指定成員查看儲存空間的所有資訊並列舉其中的檔案時,可通過Bucket Policy為對應的RAM使用者授予相應許可權。以下樣本授予指定RAM使用者查看目標儲存空間(example-bucket)的所有資訊並列舉其中檔案的許可權。

說明

由於以下策略未授予RAM使用者列舉儲存空間的許可權,指定RAM使用者無法在Bucket列表頁面查看所有Bucket並點擊進入目標Bucket。指定RAM使用者可在控制台左側功能表列的我收藏的路徑 > +添加並訪問目標Bucket。

{
    "Version":"1",
    "Statement":[
        {
            "Action":[
                "oss:Get*",
                "oss:ListObjects",
                "oss:ListObjectVersions"
            ],
            "Effect":"Allow",
            "Principal":[
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket"
            ]
        }
    ]
}

情境4:授予指定RAM角色讀取檔案的許可權

當需要允許RAM使用者或應用程式臨時訪問儲存空間檔案時,可建立RAM角色並授予相應許可權。RAM使用者或應用程式通過扮演該角色,獲得讀取儲存空間檔案的臨時訪問憑證。以下樣本為一個阿里雲帳號下的1個RAM角色下的所有會話以及1個RAM角色下的指定會話授予讀取儲存空間(example-bucket)下所有檔案的許可權。

說明

為RAM角色授權時,Principal需要遵循以下格式:arn:sts::<uid>:assumed-role/<role-name>/<session-name>。其中,<role-name>以及<session-name>的值大小寫敏感。

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "oss:GetObject"
            ],
            "Effect": "Allow",
            "Principal": [
                "arn:sts::10323xxxxx72056:assumed-role/role-name/session-name",
                "arn:sts::10323xxxxx72056:assumed-role/role2-name/*"
            ],
            "Resource": [
                "acs:oss:*:10323xxxxx72056:example-bucket/*"
            ]
        }
    ]
}

情境5:授予所有訪問者列舉所有檔案的許可權

當儲存空間用於公用資源共用,需要讓所有訪問者都能查看檔案名稱但不能訪問檔案實際內容時,可設定Principal為萬用字元星號(*),並為其授予列舉所有檔案的許可權。以下樣本授予所有訪問者列舉目標儲存空間(example-bucket)下所有檔案的許可權。

{
    "Version":"1",
    "Statement":[
        {
            "Action":[
                "oss:ListObjects",
                "oss:ListObjectVersions"
            ],
            "Effect":"Allow",
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket"
            ]
        }
    ]
}

情境6:限制無法從公網訪問

當需要禁止從公網訪問指定Bucket時,可使用acs:SourceVpc條件關鍵字建立拒絕策略語句並添加到Bucket Policy中,阻止非VPC網路的請求。公網請求會因不符合VPC網路首碼而被拒絕。以下樣本拒絕除VPC網路外的所有訪問者訪問目標Bucket(example-bucket)。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "oss:*",
      "Principal": [
        "*"
      ],
      "Resource": [
        "acs:oss:*:174649585760xxxx:example-bucket/*",
        "acs:oss:*:174649585760xxxx:example-bucket"
      ],
      "Condition": {
        "StringNotLike": {
          "acs:SourceVpc": [
            "vpc-*"
          ]
        }
      }
    }
  ]
}

情境7:限制只能從指定VPC訪問

當需要限制儲存空間只能從指定VPC訪問時,可使用acs:SourceVpc條件關鍵字建立拒絕策略語句並添加到Bucket Policy中,阻止其他VPC或公網的請求。其他VPC或公網的請求會因不符合指定VPC ID條件而被拒絕。以下樣本拒絕除指定VPC(ID為t4nlw426y44rd3iq4xxxx)外的所有訪問者讀取目標儲存空間(example-bucket)的檔案。

說明
  • 由於以下拒絕策略語句中Principal為萬用字元星號(*)且包含Condition,該拒絕策略語句會對所有訪問者生效,包括Bucket Owner。

  • 以下拒絕策略語句僅用於限制訪問,不會授予任何存取權限。如果授權主體沒有被授予過存取權限,可添加一條允許策略語句來授予其存取權限。

{
    "Version":"1",
    "Statement":[
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringNotEquals":{
                    "acs:SourceVpc":[
                        "vpc-t4nlw426y44rd3iq4xxxx"
                    ]
                }
            }
        }
    ]
}

情境8:限制只能從指定公網IP地址訪問

當需要限制儲存空間只能從指定公網IP地址訪問時,使用acs:SourceIp條件關鍵字建立拒絕策略語句並添加到Bucket Policy中,阻止其他公網IP地址或VPC的請求。來自其他公網IP地址或VPC的請求會被識別為不符合指定IP條件,觸發拒絕規則。以下樣本拒絕除指定公網IP地址203.0.113.5外的所有訪問者對example-bucket的讀取操作。

說明
  • 由於以下拒絕策略語句中Principal為萬用字元星號(*)且包含Condition,該拒絕策略語句會對所有訪問者生效,包括Bucket Owner。

  • 以下拒絕策略語句僅用於限制訪問,不會授予任何存取權限。如果授權主體沒有被授予過存取權限,可添加一條允許策略語句來授予其存取權限。

{
    "Version":"1",
    "Statement":[
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "NotIpAddress":{
                    "acs:SourceIp":[
                        "203.0.113.5"
                    ]
                }
            }
        }
    ]
}

情境9:限制只能從指定VPC的指定IP地址網段訪問

當需要限制儲存空間只能從指定VPC的指定IP地址訪問時,需要建立兩條拒絕策略語句:

  • 使用acs:SourceVpc條件關鍵字建立一條拒絕策略語句,阻止來自其他VPC或公網的請求。來自其他公網IP地址或VPC的請求會被識別為不符合指定IP條件,觸發拒絕規則。

  • 使用acs:SourceIp條件關鍵字和acs:SourceVpc條件關鍵字建立一條拒絕策略語句,用於阻止指定VPC網段之外的請求。

將以上兩條拒絕策略語句添加到Bucket Policy後,滿足任一條件即觸發拒絕。以下樣本拒絕除指定VPC(ID為t4nlw426y44rd3iq4xxxx)的指定IP地址網段(192.168.0.0/16)以外的所有訪問者對目標儲存空間(example-bucket)進行讀取檔案操作。

說明
  • 由於以下拒絕策略語句中Principal為萬用字元星號(*)且包含Condition,該拒絕策略語句會對所有訪問者生效,包括Bucket Owner。

  • 以下拒絕策略語句僅用於限制訪問,不會授予任何存取權限。如果授權主體沒有被授予過存取權限,可添加一條允許策略語句來授予其存取權限。

{
    "Version":"1",
    "Statement":[
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringNotEquals":{
                    "acs:SourceVpc":[
                        "vpc-t4nlw426y44rd3iq4xxxx"
                    ]
                }
            }
        },
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringEquals":{
                    "acs:SourceVpc":[
                        "vpc-t4nlw426y44rd3iq4xxxx"
                    ]
                },
                "NotIpAddress":{
                    "acs:SourceIp":[
                        "192.168.0.0/16"
                    ]
                }
            }
        }
    ]
}

情境10:限制只能從指定公網IP地址或指定VPC訪問

當需要限制儲存空間只能從指定公網IP地址或指定VPC訪問時,需要建立兩條拒絕策略語句:

  • 使用acs:SourceIp條件關鍵字建立一條拒絕策略語句,阻止來自其他公網IP地址的請求,同時使用StringNotLike條件操作和acs:SourceVpc條件關鍵字排除來自指定VPC的請求。

  • 使用acs:SourceVpc條件關鍵字建立一條拒絕策略語句,阻止來自其他VPC的請求,同時使用StringLike條件操作和acs:SourceVpc關鍵字排除來自指定公網IP地址的請求,以避免觸發不滿足指定VPC ID條件而被錯誤拒絕。

將以上兩條拒絕策略語句添加到Bucket Policy後,滿足任一條件就會觸發拒絕。以下樣本拒絕除指定公網IP地址(IP地址為203.0.113.5)或指定VPC(ID為t4nlw426y44rd3iq4xxxx)以外的所有訪問者執行對目標儲存空間(example-bucket)進行讀取檔案操作。

說明
  • 由於以下拒絕策略語句中Principal為萬用字元星號(*)且包含Condition,該拒絕策略語句會對所有訪問者生效,包括Bucket Owner。

  • 以下拒絕策略語句僅用於限制訪問,不會授予任何存取權限。如果授權主體沒有被授予過存取權限,可添加一條允許策略語句來授予其存取權限。

{
    "Version":"1",
    "Statement":[
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringNotLike":{
                    "acs:SourceVpc":[
                        "vpc-*"
                    ]
                },
                "NotIpAddress":{
                    "acs:SourceIp":[
                        "203.0.113.5"
                    ]
                }
            }
        },
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringLike":{
                    "acs:SourceVpc":[
                        "vpc-*"
                    ]
                },
                "StringNotEquals":{
                    "acs:SourceVpc":[
                        "vpc-t4nlw426y44rd3iq4xxxx"
                    ]
                }
            }
        }
    ]
}

情境11:設定IP黑名單

當需要拒絕特定IP地址訪問Bucket及其下的Object檔案時,可使用IP黑名單策略。通過在Bucket Policy中設定拒絕策略,可阻止指定IP地址或IP位址區段的所有訪問請求。

說明
  • 由於以下拒絕策略語句中Principal為萬用字元星號(*)且包含Condition,該拒絕策略語句會對所有訪問者生效,包括Bucket Owner。

  • 可同時配置多個IP地址和IP位址區段,用逗號分隔。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "oss:*",
      "Principal": [
        "*"
      ],
      "Resource": [
        "acs:oss:*:174649585760xxxx:example-bucket/*",
        "acs:oss:*:174649585760xxxx:example-bucket"
      ],
      "Condition": {
        "IpAddress": {
          "acs:SourceIp": [
            "101.***.***.100"
          ]
        }
      }
    }
  ]
}

情境12:限制API調用方式必須為臨時訪問憑證

通過API方式訪問儲存空間資源時,如果需要限制API調用方式必須是臨時訪問憑證,可使用acs:AccessId條件關鍵字建立一條拒絕策略語句並將其添加到Bucket Policy中,用於阻止其他非臨時訪問憑證(例如通過阿里雲帳號或者RAM使用者的長期存取金鑰)的訪問方式。對於通過非臨時訪問憑證的訪問方式,會觸發策略中的拒絕規則。以下樣本拒絕除臨時訪問憑證(以TMP.或者STS.開頭的)以外的所有訪問者查看目標儲存空間(example-bucket)以及列舉檔案的操作。

{
    "Version": "1",
    "Statement": [
        {            
            "Effect": "Deny",
            "Action":[
                "oss:Get*",
                "oss:ListObjects",
                "oss:ListObjectVersions"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "acs:AccessId": [
                        "TMP.*",
                        "STS.*"
                 ]
                }
            }
        }
    ]
}

情境13:禁止將 Bucket 和 Object 的 ACL 設定為公用訪問

當需要禁止將 Bucket 和 Object 的 ACL 設定為公用訪問時,可建立兩條拒絕策略語句:

  • 使用 oss:x-oss-acl 條件關鍵字建立一條拒絕策略語句,阻止將 Bucket ACL 設定為除 private 以外的許可權。任何嘗試設定公用讀取或公用讀寫許可權的操作會被識別為不符合私人條件,觸發拒絕規則。

  • 使用 oss:x-oss-object-acl 條件關鍵字建立一條拒絕策略語句,阻止將 Object ACL 設定為除 private 和 default 以外的許可權。

將以上兩條拒絕策略語句添加到 Bucket Policy 後,滿足任一條件即觸發拒絕。以下樣本拒絕對目標儲存空間(example-bucket)設定公用存取權限的操作。

{
    "Version": "1",
    "Statement": [
        {            
            "Effect": "Deny",
            "Action": [
                "oss:PutBucketAcl"
            ],
            "Principal": [
                "*"
            ],
            "Resource": [
                "acs:oss:*:*:example-bucket"
            ],
            "Condition": {
                "StringNotEquals": {
                    "oss:x-oss-acl": "private"
                }
            }
        },
        {            
            "Effect": "Deny",
            "Action": [
                "oss:PutObjectAcl"
            ],
            "Principal": [
                "*"
            ],
            "Resource": [
                "acs:oss:*:*:example-bucket/*"
            ],
            "Condition": {
                "StringNotEquals": {
                    "oss:x-oss-object-acl": [
                        "private",
                        "default"
                    ]
                }
            }
        }
    ]
}

開發和工具整合

除了通過控制台進行手動設定,還可以使用圖形化或命令列工具、SDK等方式進行Bucket Policy授權。

  • 使用圖形化工具ossbrowser

    支援Bucket層級的策略操作,提供與控制台相似的可視化配置體驗。安裝並登入ossbrowser後按照介面指引完成Bucket Policy的配置操作。

  • 使用命令列工具ossutil

    通過調用put-bucket-policy介面設定授權策略。

    說明

    為向量Bucket設定授權策略時,需使用ossutil vectors-api put-bucket-policy命令。

  • 使用SDK

    支援Java SDKPython SDKGo SDKNode.js SDK等多種程式設計語言進行策略配置,更多SDK支援請參見SDK參考

  • 直接調用API

    調用PutBucketPolicy介面為Bucket設定授權策略。

配額與限制

  • 策略大小:單個儲存空間支援添加多條Bucket Policy,所有策略的總大小不能超過16 KB。

  • 欄位長度:Bucket Policy中每個欄位的長度不能超過4095位元組。

相關文檔