阿里雲OSS對象存儲STS鑑權配置

STS鑑權流程
1.建立RAM子用戶
    在控制檯完成,只能由子用戶申請角色扮演,主用戶、臨時用戶不能夠。子用戶必須授予AliyunSTSAssumeRoleAccess系統權限後,才能申請角色扮演進行臨時訪問。
 
須要保存AK 信息,AK 信息只會在建立時顯示,請您妥善保管。爲安全起見, RAM 不提供 AK 信息查詢跨域

2. 建立OSS角色安全

 

 

3.新建OSS角色受權策略服務器

     在控制檯頁面的訪問控制裏面進行自定義受權策略app

     系統受權策略,阿里雲提供的一組通用受權策略,主要針對不一樣產品的只讀權限、全部權限。對於阿里雲提供的這組受權策略,用戶只能用於受權,不能編輯和修改,用戶自定義的受權策略能夠進行編輯修改。ide

 


4. 給OSS角色進行受權post

將新建的角色受權策略受權給oss角色this

 

5. 新建OSS用戶受權策略
oss角色的roleArn阿里雲


將Resource改成oss角色的roleArn.net

 

6.將OSS用戶受權策略受權給RAM子用戶code


這樣就完成了配置!


在STS鑑權的時候須要用到新建立子用戶中的參數

    AccessKey Id ,   AccessKey Secret ,  RoleArn

 建立訪問密鑰(AK)

   爲須要經過 API 進行調用的用戶建立訪問密鑰(AK),操做步驟以下:

    登陸 RAM 控制檯。

    在用戶管理頁面,找到須要建立 AccessKey 的用戶(可以使用用戶名進行模糊查詢),而後單擊其用戶名或其操做列下的管理按鈕。

    在用戶詳情頁面,單擊 建立 AccessKey。

    在彈出的對話框中,查看新建的 AK 信息,並可選擇 保存 AK 信息。

注意:

    AK 信息只會在建立時顯示,請您妥善保管。爲安全起見, RAM 不提供 AK 信息查詢。
    若是 AK 泄露或丟失,則須要建立新的 AK。
    而且AK最多隻能建立兩個


RoleArn的查看    角色管理>角色詳情

 

角色扮演常見問題

序號    問題    緣由
1    ErrorCode: NoPermission
ErrorMessage: Roles may not be assumed by root accounts.    使用主用戶的密鑰調用AssumeRole,請使用子用戶的密鑰。
2    ErrorCode: MissingSecurityToken
ErrorMessage: SecurityToken is mandatory for this action.    使用臨時用戶的密鑰調用AssumeRole,請使用子用戶的密鑰。
3    Error code: InvalidAccessKeyId.NotFound
Error message: Specified access key is not found    AccessKeyId無效,請檢查是否寫錯,特別是先後不能後空格。
4    Error code: InvalidAccessKeyId.Inactive
Error message: Specified access key is disabled.    使用的子用戶的密鑰,已經被禁止,請啓用密鑰或更換密鑰。 密鑰是否被禁止,請控制檯的「訪問控制->用戶管理->管理->用戶詳情->用戶AccessKey」確認,並開啓。
5    ErrorCode: InvalidParameter.PolicyGrammar
ErrorMessage: The parameter Policy has not passed grammar check.    角色扮演時指定的受權策略無效。AssumeRole時能夠指定受權(Policy),也能夠不指定。若是指定受權策略,則臨時用戶的權限是指定的受權策略和角色權限的交集;若是不指定受權策略,臨時用戶的權限是角色的權限。
報該錯誤時,請檢查指定的受權策略Policy。不推薦臨時用戶扮演角色時指定受權策略。若是的確須要使用受權策略,強烈建使用 RAM Policy Editor 生成受權策略。
6    ErrorCode: InvalidParameter.RoleSessionName
ErrorMessage: The parameter RoleSessionName is wrongly formed.    角色扮演時指定RoleSessionName無效。此參數用來區分不一樣的Token,以標明誰在使用此Token,便於審計; 格式:^[a-zA-Z0-9.@-_]+$,2-32個字符,瞭解更多請參看 扮演角色操做接口。如命名a,1,abc\*abc,忍者神龜等都是非法的
7    ErrorCode: InvalidParameter.DurationSeconds
Error message: The Min/Max value of DurationSeconds is 15min/1hr.    角色扮演時指定的過時時間無效,即AssumeRoleRequest.setDurationSeconds參數無效。角色扮演時能夠指定過時時間,單位爲秒,有效時間是900 ~ 3600,如assumeRoleRequest.setDurationSeconds(60L * 20); 20分鐘內有效。
8    ErrorCode: NoPermission
ErrorMessage: No permission perform sts:AssumeRole on this Role. Maybe you are not authorized to perform sts:AssumeRole or the specified role does not trust you    緣由1:AssumeRole的子用戶沒有權限,請給子用戶授予AliyunSTSAssumeRoleAccess系統受權策略。請在「訪問控制->用戶管理->受權->可選受權策略名稱」中給子用戶受權AliyunSTSAssumeRoleAccess。
緣由2:申請角色扮演的子用戶的雲帳號ID與角色的「受信雲帳號ID」不符,請角色建立者確認並修改。子用戶的雲帳號ID,即建立子用戶的主用戶的ID;角色的雲帳號ID,即建立角色的主用戶的雲帳號ID。請在以下位置確認修改 訪問控制 -> 角色管理 -> 管理 -> 角色詳細 -> 編輯基本信息 中確認修改。
緣由3:角色的類型錯誤,若是角色的類型分爲「用戶角色」和「服務角色」,服務角色不能使用AssumeRole扮演臨時用戶。

常見問題及排查
OSS 403問題

OSS返回的常見錯誤,請參看 OSS的錯誤響應。
其中403錯誤及緣由以下表:

| 錯誤 | 錯誤碼錯誤信息 | 錯誤緣由 | 解決辦法 |
| -------------- | --------------------------- | ---------------------------------------- | ------------------ |
| UserDisable.UserDisable | ErrorCode: UserDisable
ErrorMessage: UserDisable | 用戶欠費或者由於安全緣由被禁止訪問 | OSS常見錯誤及排查 |
| RequestTimeTooSkewed | ErrorCode: RequestTimeTooSkewed
ErrorMessage: The difference between the request time and the current time is too large. | 發起請求的時間和服務器時間超出15分鐘,通常是客戶端系統時間錯誤 | OSS常見錯誤及排查 |
| InvalidAccessKeyId | ErrorCode: InvalidAccessKeyId
ErrorMessage: The OSS Access Key Id you provided does not exist in our records. | AccessKeyId無效/被禁止或者過時。 | OSS常見錯誤及排查 |
| SignatureDoesNotMatch | ErrorCode: SignatureDoesNotMatch
ErrorMessage: The request signature we calculated does not match the signature you provided. Check your key and signing method. | 客戶端和服務計算的簽名不符 | OSS常見錯誤及排查 |
| PostObject | ErrorCode: AccessDenied
ErrorMessage: Invalid according to Policy: Policy expired.
ErrorCode: AccessDenied
ErrorMessage: Invalid according to Policy: Policy Condition failed: … | PostObject中Policy無效 | PostObject |
| Cors | ErrorCode: AccessForbidden
ErrorMessage: CORSResponse: This CORS request is not allowed. This is usually because the evalution of Origin, request method / Access-Control-Request-Method or Access-Control-Requet-Headers are not whitelisted by the resource's CORS spec. | CORS沒有配置或配置不對 | OSS設置跨域訪問 |
| Refers | ErrorCode: AccessDenied
ErrorMessage: You are denied by bucket referer policy. | 請檢查Bucket的Refers配置 | OSS防盜鏈 |
| AccessDenied | 見下面表權限問題錯誤及緣由 | 無權限 | 下面詳細講述 |
| 其它小類錯誤 | | | |
權限問題

權限問題錯誤及緣由見下表: 序號    錯誤    緣由 1    ErrorCode: AccessDenied ErrorMessage: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.    Bucket和Endpoint不符 2    ErrorCode: AccessDenied ErrorMessage: You are forbidden to list buckets.    沒有listBuckets權限 3    ErrorCode: AccessDenied ErrorMessage: You do not have write acl permission on this object    無setObjectAcl權限 4    ErrorCode: AccessDenied ErrorMessage: You do not have read acl permission on this object.    無getObjectAcl權限 5    ErrorCode: AccessDenied ErrorMessage: The bucket you visit is not belong to you.    子用戶沒有Bucket管理的權限(如getBucketAcl CreateBucket、deleteBucket setBucketReferer、 getBucketReferer等) 6    ErrorCode: AccessDenied ErrorMessage: You have no right to access this object because of bucket acl.    子用戶/臨時用戶沒有訪問Object的權限(如putObject getObject、appendObject deleteObject、postObject)等 7    ErrorCode: AccessDenied ErrorMessage: Access denied by authorizer's policy.    臨時用戶訪問無權限,該臨時用戶角色扮演指定受權策略,該受權策略無權限 8    ErrorCode: AccessDenied ErrorMessage: You have no right to access this object.    子用戶/臨時用戶無當前操做權限(如initiateMultipartUpload等)  

相關文章
相關標籤/搜索