子賬戶及STS臨時賬戶呼叫OSS的常見問題及排查
STS臨時賬戶呼叫常見的錯誤碼及原因參考:STS常見問題及排查
1)子賬戶要如何授權只讀bucket的許可權
為此子使用者附加系統授權策略”AliyunOSSReadOnlyAccess”,該許可權擁有全部bucket的只讀許可權;
2)子賬戶只讀單個bucket的policy如何編寫
如果您需要授權一個子使用者(例如,代表您的某個應用程式)通過 OSS SDK 或 OSS CMD 列出並讀取一個 Bucket 中的資源,那麼您需要建立一條自定義授權策略來完成。
假設您的 Bucket 名稱為 “myphotos”,那麼建立的授權策略樣例如下:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "oss:ListObjects",
"Resource": "acs:oss:*:*:myphotos"
},
{
"Effect": "Allow",
"Action": "oss:Get*",
"Resource": [
"acs:oss:*:*:myphotos",
"acs:oss:*:*:myphotos/*"
]
}
]
}
如果您希望被授權的子使用者能夠通過 OSS 控制檯/客戶端進行操作,那麼授權策略中還需要新增 GetBucketAcl 以及 GetObjectAcl 許可權(控制檯為了操作體驗的優化需要額外呼叫 OSS 的部分 API)。目前控制檯的policy定義只能實現能看到所有的bucket但是隻對授權的bucket有許可權,允許子使用者通過 OSS 控制檯操作的授權策略樣例如下:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "oss:ListBuckets",
"Resource": "acs:oss:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"oss:ListObjects",
"oss:GetBucketAcl"
],
"Resource": "acs:oss:*:*:myphotos"
},
{
"Effect": "Allow",
"Action": [
"oss:Get*"
],
"Resource": [
"acs:oss:*:*:myphotos",
"acs:oss:*:*:myphotos/*"
]
}
]
}
3)子賬戶擁有單個bucket的全部許可權,policy如何編寫
如果您需要授權一個子使用者(例如,代表您的某個應用程式)通過 OSS SDK 或 OSS CMD 管理Bucket 中的資源,那麼您需要建立一條自定義授權策略來完成。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "oss:*",
"Resource": [
"acs:oss:*:*:myphotos",
"acs:oss:*:*:myphotos/*"
]
}
]
}
如果您希望被授權的子使用者能夠通過 OSS 控制檯/客戶端進行操作,那麼得為policy授權listbucket許可權;策略如下
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "oss:ListBuckets",
"Resource": "acs:oss:*:*:*"
},
{
"Effect": "Allow",
"Action": "oss:*",
"Resource": [
"acs:oss:*:*:myphotos",
"acs:oss:*:*:myphotos/*"
]
}
]
}
4)子賬戶擁有單個bucket下某個目錄的許可權,策略如何編寫
如果是sdk /API 呼叫,那麼授權如下:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:*"
],
"Resource": [
"acs:oss:*:*:gsdata-img1/gsdata/*"
]
},
{
"Effect": "Allow",
"Action": [
"oss:ListObjects"
],
"Resource": [
"acs:oss:*:*:gsdata-img1"
],
"Condition": {
"StringLike": {
"oss:Prefix": [
"gsdata/*"
]
}
}
}
]
}
如果想實現控制檯/客戶端工具呼叫,只能看到bucket某個目錄下的資源,並且只有對應目錄的許可權,其他目錄沒許可權,也不能看到其他目錄,目前實現不了,只能實現能看到其父目錄下的所有資源及目錄,但其他沒許可權的目錄不能進入,資源也不能獲取,策略如下:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:ListBuckets",
"oss:GetBucketAcl"
],
"Resource": [
"acs:oss:*:*:*"
]
},
{
"Effect": "Allow",
"Action": [
"oss:*"
],
"Resource": [
"acs:oss:*:*:gsdata-img1/gsdata/*"
]
},
{
"Effect": "Allow",
"Action": [
"oss:ListObjects"
],
"Resource": [
"acs:oss:*:*:gsdata-img1"
],
"Condition": {
"StringLike": {
"oss:Delimiter": "/",
"oss:Prefix": [
"",
“gsdata/*”
]
}
}
},
{
"Effect": "Allow",
"Action": [
"oss:ListObjects"
],
"Resource": [
"acs:oss:*:*:gsdata-img1"
],
"Condition": {
"StringLike": {
"oss:Prefix": [
"gsdata/*"
]
}
}
}
]
}
5)子賬戶及STS賬戶的業務場景是什麼
看1.子賬戶及STS臨時賬戶的業務場景 的介紹
6)STS臨時賬戶生成後,如何呼叫操作OSS的資源
通過SDK傳入STS臨時賬戶的ak,sk,token 來進行初始化client,進行相關介面的呼叫
JAVA sdk 初始化:授權訪問
PYTHON SDK初始化:授權訪問
Android SDK初始化:初始化
IOS SDK初始化:初始化
.NET SDK初始化:授權訪問
PHP SDK初始化:授權訪問
JS WEB SDK初始化:使用STS
C SDK初始化:授權訪問
7)STS請求獲取報錯NoPermission
I) 就報錯而言是沒許可權
II)為子賬戶授權AliyunSTSAssumeRoleAccess 許可權
為角色授權oss的全部許可權,再生成臨時賬戶看看是否正常
III)還是異常,工單反饋下子賬戶的accesskeyid 及對應的報錯資訊,密碼不用反饋
8)STS呼叫OSS報錯InvalidAccessKeyId
STS呼叫報錯如下:
<Error>
<Code>InvalidAccessKeyId</Code> <Message>The OSS Access Key Id you provided does not exist in our records.</Message> <RequestId>5A2F6CE3295E55B2D7360E0F</RequestId> <HostId>*******.oss-cn-beijing.aliyuncs.com</HostId> <OSSAccessKeyId>STS.lTAI53kJu28QUJJt</OSSAccessKeyId>
</Error>
I ) 排查初始化client是否有傳入STS的accesskey ID 密碼及token,參考《6)STS臨時賬戶生成後,如何呼叫操作OSS的資源》進行初始化client
II ) 排查STS臨時賬戶是否過期,STS臨時賬戶存在過期時間,最長3600秒過期,嘗試重新生成STS臨時賬戶進行操作object看看是否正常
9)STS臨時賬戶呼叫報錯AccessDenied
報錯資訊如下:
<Error> <Code>AccessDenied</Code> <Message>You have no right to access this object because of bucket acl.</Message> <RequestId>5A2F894D99C1BD4157DB52E1</RequestId> <HostId>record-image-server.oss-cn-beijing.aliyuncs.com</HostId>
</Error>
I) 該報錯為臨時賬戶沒有對應操作的許可權
II) 排查建立STS臨時賬戶的子賬戶是否有授權AliyunSTSAssumeRoleAccess 許可權或者扮演對應角色的許可權,為子賬戶授權AliyunSTSAssumeRoleAccess 許可權測試
III) 排查建立STS臨時賬戶的角色,是否有授權對應bucket對應介面的許可權,為角色授權AliyunOSSFullAccess許可權測試
IV 排查建立STS臨時賬戶時傳入的policy是否有對應bucket對應介面的許可權,設定policy為OSSFULL許可權看看是否正常;
{
"Statement": [
{
"Action": "oss:*",
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "1"
}
10)STS臨時賬戶呼叫OSS報錯Access denied by authorizer`s policy
I):AssumeRole的子使用者沒有許可權,請給子使用者授予AliyunSTSAssumeRoleAccess系統授權策略。請在 訪問控制 > 使用者管理 > 授權 > 可選授權策略名稱 中給子使用者授權 AliyunSTSAssumeRoleAccess。
II):申請角色扮演的子使用者的雲賬號ID與角色的“受信雲賬號ID”不符,請角色建立者確認並修改。子使用者的雲賬號ID,即建立子使用者的主使用者的ID;角色的雲賬號ID,即建立角色的主使用者的雲賬號ID。請在如下位置確認修改: 訪問控制 > 角色管理 > 管理 > 角色詳細 > 編輯基本資訊 中確認修改。
III):角色的型別錯誤,如果角色的型別分為“使用者角色”和“服務角色”,服務角色不能使用AssumeRole扮演臨時使用者。
相關文章
- 問題賬戶需求分析
- win10系統怎麼新增臨時登入賬戶 win10電腦設定臨時賬戶的方法Win10
- 域賬戶頻繁鎖定排查
- iOS 更換開發者賬戶的問題iOS
- MQTT 客戶端應用及常見問題(C#)MQQT客戶端C#
- 客戶服務常見問題及解決方法介紹
- ORACLE賬戶提示EXPIRED(GRACE)問題解決Oracle
- Ubuntu 10.4 root賬戶聲音問題Ubuntu
- 圖靈社群是否存在賬戶安全問題?圖靈
- 開通微信支付(微信商戶平臺賬戶)流程及所需資料
- MySQL賬戶管理MySql
- EOS基礎1:賬戶註冊及資源消耗
- Mac OS High Sierra root賬戶漏洞問題Mac
- 將SQL Server賬戶對應到Windows系統賬戶SQLServerWindows
- Git-如何區分使用個人賬戶和公司賬戶Git
- mysql賬戶新增遠端訪問MySql
- win10微軟線上賬戶如何與本地賬戶切換_win10 win10本地賬戶怎麼切換到微軟線上賬戶Win10微軟
- Google賬戶設定Go
- LDAP網路賬戶LDA
- ubuntu 禁用 guest 賬戶Ubuntu
- 解鎖oracle賬戶Oracle
- 博通賬戶亂碼
- CPA十二--賬戶設定及會計處理程式(轉載)
- 常見問題及解決
- Google 面試題 | 最優賬戶結餘Go面試題
- win10怎麼刪除電子郵件賬戶_如何刪除win10郵件賬戶Win10
- oracle 只讀賬戶的建立Oracle
- Win10系統下如何退出微軟賬戶改成本地賬戶Win10微軟
- win10怎麼更改賬戶 win10如何更改本地賬戶Win10
- win10怎麼建立賬戶 window10如何建立新賬戶Win10
- win10 電子郵件和賬戶選項裡的賬號如何刪除Win10
- 蘋果企業開發者賬戶蘋果
- Google Play 開發者賬戶被封Go
- [譯]搭建賬戶系統
- Git多賬戶設定Git
- centos建立賬戶指令碼CentOS指令碼
- Ubuntu 啟用 root 賬戶Ubuntu
- SDWebImage的基本用法及常見問題Web