如何給oss設置子賬號控制指定的oss資源文件

OSS默認的AccessKey是您訪問阿里雲API的密鑰,具有該賬戶完全的權限。如果通過其他方式(eg, Github)將AccessKey公開到外部渠道,那麼將會對OSS上的資源文件產生威脅。可能會造成無法估計的損失。今天爲大家帶來如何給OSS分配一個子accesskey(以下簡稱AK)來控制指定的文件資源。不多逼逼,先看其中的一種錯誤的授權方式:
以下的這種授權方式應該是讓授權的AK使用OSS工具登錄時只會顯示所指定的文件資源,具體的我沒去試,因爲這麼設置沒有達到我要的效果不必浪費時間,主要是讓大家看下:
在這裏插入圖片描述
注意:以上的”授權“ 方式是不行的。不能達到授權賬號通過API 調到指定的文件目錄資源。

正確的方式這樣:

**1.**到阿里雲控制檯的RAM訪問控制檯裏找到”用戶“,新添加一個用,給這個用戶勾選”編程訪問“ 這一項。這個”用戶“就先設置到這裏,不需要做其他的操作。待會回來設置權限。

選擇了編程訪問會生成一個AK跟密鑰,注意 這個只會在創建的時候展示一次!以後不會再顯示了,注意做好備份。
在這裏插入圖片描述

2.繼續在RAM控制訪問裏選擇”權限控制策略”, 選擇新建策略

在這裏插入圖片描述
下一步填寫好基本信息後,選擇腳本配置。
在這裏插入圖片描述
腳本配置輸入一下腳本代碼:

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "oss:ListBuckets",
                "oss:GetBucketAcl"
            ],
            "Resource": [
                "acs:oss:*:*:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "oss:GetObject",
                "oss:GetObjectAcl",
                "oss:putObject",
                "oss:putObjectAcl"
            ],
            "Resource": [
                "acs:oss:*:*:bucket名稱/目錄/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "oss:ListObjects",
                "oss:GetObject",
                "oss:putObject",
                "oss:putObjectAcl",
                "oss:GetObjectAcl"
            ],
            "Resource": [
                "acs:oss:*:*:bucket名稱"
            ],
            "Condition": {
                "StringLike": {
                    "oss:Delimiter": "/",
                    "oss:Prefix": [
                        "",
                        "目錄/",
                        "目錄/*"
                    ]
                }
            }
        }
    ]
}  

按照上面的提示填寫自己的參數
這個時候保存,我們就設置好了權限策略。接下來進行第三步

3.接着在RAM控制訪問頁面,我們來創建一個RAM角色

在這裏插入圖片描述
點擊創建好的RAM角色進去設置剛剛配置的權限策略。
在這裏插入圖片描述

在這裏插入圖片描述

接着 按照步驟 1添加策略 2選擇自定義策略,就會看到3 我們剛剛自定義的策略。選擇就行。

到這裏權限已經設置完了接下來我們用main方法掉一個API來進行測試:

          // Endpoint以杭州爲例,其它Region請按實際情況填寫。
        String endpoint = "這裏是你的OSS訪問地址,直接去OSS點擊基本信息就能看到";
// 阿里雲主賬號AccessKey擁有所有API的訪問權限,風險很高。強烈建議您創建並使用RAM賬號進行API訪問或日常運維,請登錄 https://ram.console.aliyun.com 創建RAM賬號。
        String accessKeyId = "你的AK";
        String accessKeySecret = "你的密鑰";
        String bucketName = "你的bucketName ";
        String KeyPrefix = "";

// 創建OSSClient實例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 判斷文件是否存在。doesObjectExist還有一個參數isOnlyInOSS,如果爲true則忽略302重定向或鏡像;如果爲false,則考慮302重定向或鏡像。
        boolean found = ossClient.doesObjectExist("你的bucketName ", "需要測試的文件或者文件夾");
        System.out.println(found);

// 關閉OSSClient。
        ossClient.shutdown();

我設置的可訪問的資源是 num1 這個文件夾
查看結果:
在這裏插入圖片描述
嗷吼~ 顯示true 說明 這個文件夾是存在的,並且能訪問。

接下來 訪問同一級目錄下的 num2文件夾:
查看結果
這個時候就是提示無權限哦。
在這裏插入圖片描述
以上就是給OSS分配一個子賬戶去完全控制某一個資源。
總結一下:
1.創建”用戶“
2.創建”策略“ 寫腳本代碼
3.創建RAM用戶 並分配上面的自定義策略

今天不學習,明天變垃圾。

給大家推薦一個公衆號,資料超多,相信我全是你們想要的
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章