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用戶 並分配上面的自定義策略
今天不學習,明天變垃圾。
給大家推薦一個公衆號,資料超多,相信我全是你們想要的