




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、表格存儲授權(quán)管理訪問控制/STS SDK使用手冊訪問控制/STS SDK使用手冊 PAGE 32 PAGE 32授權(quán)管理RAM和STS介紹RAM和STS是阿里云提供的權(quán)限管理系統(tǒng),詳情可以參考訪問控制產(chǎn)品幫助文檔。RAM可以將在主賬號的權(quán)限范圍內(nèi)創(chuàng)建子賬號,給不同的子 賬號分配不同的權(quán)限從而達(dá)到授權(quán)管理的目的。STS來完成對于臨時用 戶的訪問授權(quán)。背景介紹AccessKey的情況下如何安全的授權(quán)別人訪問。 因?yàn)橐坏┲髻~號的AccessKey暴露出去的話會帶來極大的安全風(fēng)險,別人可以隨意操作該賬號下所有的資源,盜取重要信息等。相對于RAM提供的長效控制機(jī)制,STS提供的是一種臨時訪問授權(quán),通過S
2、TS可以返回臨時的AccessKey和(TableStore)。一般來說從STS獲取的權(quán)限會 受到更加嚴(yán)格的限制,并且擁有時間限制,因此這些信息泄露之后對于系統(tǒng)的影響也很小。這些功能在下文中會以實(shí)際的例子來說明?;靖拍钜韵率且恍┗靖拍畹暮唵谓忉專鹤淤~號:從阿里云的主賬號中創(chuàng)建出來的子賬號,在創(chuàng)建的時候可以分配獨(dú)立的密碼和權(quán)限,每個子 賬號擁有自己AccessKey,可以和阿里云主賬號一樣正常的完成有權(quán)限的操作。一般來說,這里的子 賬號可以理解為具有某種權(quán)限的用戶,可以被認(rèn)為是一個具有某些權(quán)限的操作發(fā)起者。角色(Role):表示某種操作權(quán)限的虛擬概念,但是沒有獨(dú)立的登錄密碼和AccessKe
3、y。子賬號可以 扮演角色,扮演角色的時候的權(quán)限是該角色自身的權(quán)限。RDSRDS/API授權(quán)策略(Policy):用來定義權(quán)限的規(guī)則,比如允許用戶讀取、或者寫入某些資源。資源(Resource):代表用戶可訪問的云資源,比如TableStore所有的Instance、或者某個Instance、或者某個Instance下面的某個Table等。子賬號和角色可以類比為某個個人和其身份的關(guān)系,某人在公司的角色是員工,在家里的角色是父親,在不同 的場景扮演不同的角色,但是還是同一個人。在扮演不同的角色的時候也就擁有對應(yīng)角色的權(quán)限。單獨(dú)的員工 或者父親概念并不能作為一個操作的實(shí)體,只有有人扮演了之后才是一個
4、完整的概念。這里還可以體現(xiàn)一個重 要的概念,那就是角色可以被多個不同的個人同時扮演。完成角色扮演之后,該個人就自動擁有該角色的所有 權(quán)限。這里再用一個例子解釋一下。某個阿里云用戶,名為alice,其在TableStore有兩個Instance,alice_a和alice_b。alice對這兩個Instance都擁有完全的權(quán)限。為了避免阿里云賬號的AccessKey泄露導(dǎo)致安全風(fēng)險,alice使用RAM創(chuàng)建了兩個子賬號bob和carol,bob對alice_a擁有讀寫權(quán)限,carol對alice_b擁有讀寫權(quán)限。bob和carol都擁有獨(dú)立的Instance,而且alice可以很方便的在控制臺取
5、消泄 露用戶的權(quán)限。現(xiàn)在因?yàn)槟承┰?,需要授?quán)給別人讀取alice_a中的Table,這種情況下不應(yīng)該直接把bob的AccessKey透露出去,那么,這個時候可以新建一個角色,比如AliceAReader,給這個角色賦予讀取alice_a的權(quán)限。但是請注意,這個時候AliceAReader還是沒法直接用的,因?yàn)椴⒉淮嬖趯?yīng)AliceAReader的AccessKey,AliceAReader現(xiàn)在僅僅表示一個擁有訪問alice_a權(quán)限的一個虛擬實(shí)體。為了能獲取臨時授權(quán),這個時候可以調(diào)用STS的AssumeRole接口,告訴STS,bob將要扮演AliceAReader這個角色,如果成功,STS會
6、返回一個臨時的AccessKeyId、AccessKeySecret還有SecurityToken作為訪問憑證。將這個憑證發(fā)給需要訪問的臨時用戶就可以獲得訪問alice_a的臨時權(quán) 限了。憑證過期的時間在調(diào)用AssumeRole的時候指定。為什么RAM和STS這么復(fù)雜乍一看RAM和STS的概念是很復(fù)雜的,但這是為了權(quán)限控制的靈活性而犧牲了部分的易用性。將子賬號和角色分開,主要是為了將執(zhí)行操作的實(shí)體和代表權(quán)限集合的虛擬實(shí)體分開。如果用戶本身需要的權(quán) 限很多,比如讀寫權(quán)限,但是實(shí)際上每次操作只需要其中的一部分權(quán)限,那么我們就可以創(chuàng)建兩個角色,分別 具有讀寫權(quán)限,然后創(chuàng)建一個沒有任何權(quán)限但是可以擁有
7、扮演這兩個角色權(quán)限的用戶。當(dāng)用戶需要讀的時候就 可以臨時扮演其中擁有讀權(quán)限的角色,寫的時候同理,將每次操作中權(quán)限泄露的風(fēng)險降低。而且通過扮演角色 可以將權(quán)限授予其他的阿里云用戶,更加方便了協(xié)同使用。當(dāng)然,提供了靈活性并不代表一定要使用全部的功能,應(yīng)該根據(jù)需求來使用其中的一個子集即可。比如不需要 帶過期時間的臨時訪問憑證的話,完全可以只使用RAM的子賬號功能而無需使用STS。下面會用范例提供一些RAM和STS的使用指南,以及使用上的建議。示例在操作上會盡量使用控制臺和命令行 等操作方式,減少實(shí)際代碼使用。如果需要使用代碼來實(shí)現(xiàn)建議參看RAM和STS的API手冊。快速入門這個示例從一個沒有任何In
8、stance的阿里云用戶開始,以下內(nèi)容中出現(xiàn)的AccessKey請?zhí)鎿Q成用戶自己對應(yīng)的AccessKey。在測試中使用到了CLI工具,這是TableStore的命令行工具,可以直接通過命令行讀寫數(shù)據(jù),獲取的地址為表格 存儲CLI工具包。安裝依賴:python安裝依賴:pythononekey_INSTALL.py參數(shù)配置:pythonots_console-urlhttp:/.-idAccessID-key執(zhí)行命令:如建表,ctpk1:string,pk2:integerreadrt:1writert:1詳細(xì)用法和其它命令請參考CLI工具包內(nèi)的幫助文檔。假定該用戶是一個移動開發(fā)者,目前只有一個
9、ram-test-dev的Instance用來做開發(fā)測試等功能。子賬號訪問那么,第一件要做的事情就是不再使用主賬號來訪問這個Instance,這樣可以規(guī)避AccessKey或者密碼泄露導(dǎo) 致的問題。在控制臺上操作請點(diǎn)擊進(jìn)入訪問控制,如果之前沒有使用過的需要先點(diǎn)擊開通公測服務(wù)。進(jìn)入用戶管理頁面。這里顯示還沒有任何用戶,那么我們點(diǎn)擊右上角的新建用戶來創(chuàng)建一個擁有和主賬號一樣完全訪問TableStore權(quán)限的子賬號,記住要勾選生成AccessKey的選項(xiàng)。最后一步會生成該賬號的AccessKey,一定要在這一步保存下來用于后續(xù)的訪問。性能測試/性能測試視頻教程性能測試/性能測試視頻教程返回用戶管理界
10、面,這里顯示我們創(chuàng)建了一個名為ram_test的賬號。創(chuàng)建完成之后,該子賬號還是沒有任何權(quán) 限的,點(diǎn)擊右邊的授權(quán)鏈接,給該賬號賦予TableStore的完全訪問權(quán)限。授權(quán)完成之后如果該賬號需要控制臺登錄等權(quán)限也可以點(diǎn)擊右側(cè)的管理鏈接來完成操作。$pythonots_console$pythonots_console-url HYPERLINK http:/TableStoreT/ http:/TableStoreT-idVPIzjuDB6T4FGoWM-key r1usnIQ4Tw1yI6bNJkKay6A8EJoMvs$OTS-TableStoreTest:cttestpk1:string,
11、pk2:integerreadrt:1writert:1 Table test has been createdsuccessfully.$OTS-TableStoreTest: dt test You will delete the table:test!press Y (confirm) :YTable test has been deleted successfully.可見一般的操作已經(jīng)完全可以使用這個賬號來完成所有的操作,避免泄露主賬號的AccessKey讀寫權(quán)限分離當(dāng)需要對部分用戶共享TableStore某個Instance的數(shù)據(jù),但又不希望數(shù)據(jù)被修改,這時可以創(chuàng)建一個具有只讀 權(quán)
12、限的子賬號,做到讀寫權(quán)限分離。那么同上文的操作方式,創(chuàng)建一個ram_test_pub的賬號,在授權(quán)管理的地方選擇ReadOnly即可,如下圖所示。OSS/周邊工具OSS/周邊工具使用該賬號的AccessKey同樣測試建表和刪表的權(quán)限,這里的AccessKey為ram_test_pub的,實(shí)際試驗(yàn)中AccessKey請?zhí)鎿Q成自己試驗(yàn)使用的。阿里云大數(shù)據(jù)平臺/郡縣圖治阿里云大數(shù)據(jù)平臺/郡縣圖治$python$pythonots_console-url HYPERLINK http:/TableStoreT/ http:/TableStoreT-idftWyMEYu1rBYTbWM-key u4qR
13、5IGu5xJsvSO1y8moyC6n5vA7af$OTS-TableStoreTest:cttestpk1:string,pk2:integerreadrt:1writert:1 Fail to create tabletest.$OTS-TableStoreTest: dt test You will delete the table:test!press Y (confirm) :YFail to delete table test.可見確實(shí)已經(jīng)無法使用ram_test_pub這個賬號建表和刪表了。自定義權(quán)限Action定義包含兩類API:Instance讀寫相關(guān)的管理類API;表和行
14、讀寫相關(guān)的數(shù)據(jù) 類API??梢愿鶕?jù)Action設(shè)置開放或限制用戶可以訪問的API。API名稱/ActionAPI類別說明ListInstance管理類獲取Instance列表,僅控制臺調(diào)用InsertInstance管理類創(chuàng)建Instance,僅控制臺調(diào)用GetInstance管理類獲取Instance信息,僅控制臺調(diào)用DeleteInstance管理類刪除Instance,僅控制臺調(diào)用ListTable數(shù)據(jù)類獲取Table列表,控制臺和SDK調(diào)用CreateTable數(shù)據(jù)類創(chuàng)建Table,控制臺和SDK調(diào)用UpdateTable數(shù)據(jù)類更新Table信息,控制臺和SDK調(diào)用DescribeTa
15、ble數(shù)據(jù)類獲取Table信息,控制臺和SDK調(diào)用DeleteTable數(shù)據(jù)類刪除Table,控制臺和SDK調(diào)用GetRow數(shù)據(jù)類讀取一行數(shù)據(jù),僅SDK調(diào)用PutRow數(shù)據(jù)類插入一行數(shù)據(jù),僅SDK調(diào)用UpdateRow數(shù)據(jù)類更新一行數(shù)據(jù),僅SDK調(diào)用DeleteRow數(shù)據(jù)類刪除一行數(shù)據(jù),僅SDK調(diào)用GetRange數(shù)據(jù)類范圍讀取數(shù)據(jù),僅SDK調(diào)用BatchGetRow數(shù)據(jù)類批量讀取多行數(shù)據(jù),僅SDK調(diào)用BatchWriteRow數(shù)據(jù)類批量寫入多行數(shù)據(jù),僅SDK調(diào)用在創(chuàng)建TableStore的授權(quán)策略時,每個action需要添加ots:前綴,多個action以逗號分隔,并且支持星號通配 符(包括
16、前綴匹配和后綴匹配)。下面是一些典型的Action定義。單個API。Action: ots:GetRowAction: ots:GetRow多個API。Action: Action: ots:PutRow, ots:GetRow所有只讀API。Action: Action: ots:BatchGet*, ots:Describe*, ots:Get*, ots:List*所有讀寫API。Action: ots:*Action: ots:*Resource定義acs:ots:region:user_id:instance/instance_name/table/table_nameTableSt
17、ore的資源由多個字段組成:產(chǎn)品、地域、用戶ID、實(shí)例名和表名,每個字段支持星號通配符(包括前 綴匹配和后綴匹配),格式如下,其中xxx表示變量。產(chǎn)品固定為ots,地域?yàn)橛⑽目s寫(如cn-hangzhou, 服務(wù)節(jié)點(diǎn)地域信息請參考),用戶ID為阿里云賬號ID。acs:ots:region:user_id:instance/instance_name/table/table_name典型的Resource定義。所有地域的所有用戶的所有資源。Resource: acs:ots:*:*:*Resource: acs:ots:*:*:*華東1(杭州)域,用戶123456的所有Instance及其下面所
18、有的Table。Resource: acs:ots:cn-hangzhou:123456:instance/*Resource: acs:ots:cn-hangzhou:123456:instance/*華東1(杭州)域,用戶123456的名稱為abc的Instance及其下面所有的Table。Resource: Resource: acs:ots:cn-hangzhou:123456:instance/abc, acs:ots:cn-hangzhou:123456:instance/abc/table/*所有以abc開頭的Instance及下面的所有Table。Resource: acs:o
19、ts:*:*:instance/abc*Resource: acs:ots:*:*:instance/abc*所有以abc開頭的Instance下面的所有以xyz開頭的Table(不包括Instance資源,不匹配acs:ots:*:*:instance/abc*)。Resource: acs:ots:*:*:instance/abc*/table/xyz*Resource: acs:ots:*:*:instance/abc*/table/xyz*所有以abc結(jié)尾的Instance及下面的所有以xyz結(jié)尾的Table。Resource: acs:ots:*:*:instance/*abc, R
20、esource: acs:ots:*:*:instance/*abc, acs:ots:*:*:instance/*abc/table/*xyz管理類API訪問的資源管理類API主要為Instance相關(guān)的操作,僅由官網(wǎng)控制臺調(diào)用,對這類API的Action和Resource定義,將影響用 戶使用控制臺。下面訪問的資源省略了acs:ots:region:user_id:前綴,只描述instance和table部分。API名稱/Action訪問的資源ListInstanceinstance/*InsertInstanceinstance/instance_nameGetInstanceinsta
21、nce/instance_nameDeleteInstanceinstance/instance_name數(shù)據(jù)類API訪問的資源數(shù)據(jù)類API主要為Table和行相關(guān)的操作,官網(wǎng)控制臺和SDK都會調(diào)用,對這類API的Action和Resource定義,將影響用戶使用控制臺。下面訪問的資源省略了acs:ots:region:user_id:前綴,只描述instance和table部 分。API名稱/Action訪問的資源ListTableinstance/instance_name/table/*CreateTableinstance/instance_name/table/table_nameU
22、pdateTableinstance/instance_name/table/table_nameDescribeTableinstance/instance_name/table/table_nameDeleteTableinstance/instance_name/table/table_nameGetRowinstance/instance_name/table/table_namePutRowinstance/instance_name/table/table_nameUpdateRowinstance/instance_name/table/table_nameDeleteRowin
23、stance/instance_name/table/table_nameGetRangeinstance/instance_name/table/table_nameBatchGetRowinstance/instance_name/table/table_nameBatchWriteRowinstance/instance_name/table/table_name常見問題說明是通過字符串匹配進(jìn)行驗(yàn)證的,并且星號通配符區(qū)分前綴和后綴匹配。如 果Resource定義為acs:ots:*:*:instance/*/,則無法匹配acs:ots:*:*:instance/abc。如果Resourc
24、e定 義為acs:ots:*:*:instance/abc,則無法匹配acs:ots:*:*:instance/abc/table/xyz。登陸TableStore控制臺管理實(shí)例資源,需要授予用戶acs:ots:region:user_id:instance/*資源的讀 取權(quán)限,因?yàn)榭刂婆_需要獲取實(shí)例的列表。對于批量操作API(如BatchGetRow和BatchWriteRow),后端服務(wù)會對被訪問的每張Table分別鑒 權(quán),只有所有Table都鑒權(quán)通過操作才能被執(zhí)行,否則會返回權(quán)限錯誤。Condition定義目前Policy支持訪問IP限制、是否通過https訪問、是否通過MFA(多因素認(rèn)
25、證)訪問和訪問時間限制等多種鑒 權(quán)條件,TableStore所有API都已經(jīng)支持這些條件。訪問IP限制訪問控制可以限制訪問TableStore的源IP地址,并且支持根據(jù)網(wǎng)段進(jìn)行過濾。下面是一些典型的使用場景。- 限制多個IP地址,如只允許IP地址為11和11的請求訪問。Statement: Effect: Allow,Action: ots:*, Resource: acs:ots:*:*:*, Condition: IpAddress: acs:SourceIp: 11,11,Version: 1- 限制單個IP地址和IP網(wǎng)段,如只允許IP地址為11或11/24網(wǎng)段的請求訪問。Stateme
26、nt: Effect: Allow,Action: ots:*, Resource: acs:ots:*:*:*, Condition: IpAddress: acs:SourceIp: 11, 11/24,Version: 1https訪問限制訪問控制可以限制是否通過https訪問,下面是典型的使用場景。性能測試/Lite用戶使用手冊性能測試/Lite用戶使用手冊Statement: Statement: Effect: Allow,Action: ots:*, Resource: acs:ots:*:*:*, Condition: Bool: acs:SecureTransport: tr
27、ue,Version: 1MFA訪問限制訪問控制可以限制是否通過MFA(多因素認(rèn)證)訪問,下面是典型的使用場景。限制請求必須通過MFA訪問。Statement: Effect: Allow,Action: ots:*, Resource: acs:ots:*:*:*, Condition: Bool: acs:MFAPresent : true,Version: 1訪問時間限制訪問控制可以限制請求的訪問時間,即只允許或拒絕在某個時間點(diǎn)范圍之前的請求。下面是典型的使用場景。2016年1月1號凌晨之前用戶可以訪問,之后就不能再訪問。Statement: Effect: Allow,Action:
28、ots:*,大數(shù)據(jù)處理服務(wù)MaxCompute/安全指南大數(shù)據(jù)處理服務(wù)MaxCompute/安全指南Resource: acs:ots:*:*:*, Resource: acs:ots:*:*:*, Condition: DateLessThan: acs:CurrentTime: 2016-01-01T00:00:00+08:00,Version: 1典型使用場景結(jié)合上面的Action、Resource和Condition的定義,下面我們給出一些典型使用場景的Policy定義和授權(quán)方法。多種授權(quán)條件對于訪問IP地址為11/24網(wǎng)段的用戶,可以對所有名稱為online-01和online-02
29、的Instance執(zhí)行 讀寫操作(包括Instance下面的所有Table),且要求只能在2016-01-01 00:00:00之前訪問和通過https訪問。Statement: Statement: Effect: Allow,Action: ots:*, Resource: acs:ots:*:*:instance/online-01, acs:ots:*:*:instance/online-01/table/*, acs:ots:*:*:instance/online-02, acs:ots:*:*:instance/online-02/table/*,Condition: IpAddr
30、ess: acs:SourceIp: 11/24,DateLessThan: acs:CurrentTime: 2016-01-01T00:00:00+08:00,Bool: acs:SecureTransport: true,Version: 1大數(shù)據(jù)處理服務(wù)MaxCompute/Java SDK大數(shù)據(jù)處理服務(wù)MaxCompute/Java SDK然后,按照之前描述的方式,將策略授權(quán)給子賬號。拒絕請求Statement: Statement: Effect: Deny,Action: ots:Create*, ots:Insert*, ots:Put*, ots:Update*, ots:D
31、elete*, Action: ots:Create*, ots:Insert*, ots:Put*, ots:Update*, ots:Delete*, ots:BatchWrite*,Resource: acs:ots:cn-beijing:*:instance/online*/table/*, acs:ots:cn-beijing:*:instance/product*/table/*,Condition: IpAddress: acs:SourceIp: 11,Version: 1子賬號訪問現(xiàn)在子賬號已經(jīng)可以登錄TableStore控制臺,對Instance和Table進(jìn)行管理。并且子
32、賬號可以調(diào)用SDK接口,訪 問數(shù)據(jù)類API。登錄控制臺首先使用主賬號進(jìn)入RAM控制臺,進(jìn)入用戶管理頁面,點(diǎn)擊子賬號列表右方的管理按鈕。在子賬號用戶詳情頁面,點(diǎn)擊啟用控制臺登錄,然后重置密碼。然后通過RAM子賬號登錄鏈接登錄控制臺(鏈接可以在RAM控制臺概述頁面查看),登錄成功后,點(diǎn)擊左邊表 格存儲圖標(biāo),進(jìn)入控制臺。啟用多因素認(rèn)證多因素認(rèn)證(Multi-Factor Authentication, MFA)是一種簡單有效的最佳安全實(shí)踐方法,它能夠在用戶名和密碼之外再額外增加一層安全保護(hù)。啟用 MFA 后,用戶登錄阿里云網(wǎng)站時,系統(tǒng)將要求輸入用戶名和密碼(第一安全要素),然后要求輸入來自其MFA設(shè)
33、備的可變驗(yàn)證碼(第二安全要素)。這些多重要素結(jié)合起來將 為您的賬戶提供更高的安全保護(hù)。在用戶詳情頁面,點(diǎn)擊啟用虛擬MFA設(shè)備,按照幫助流程啟用MFA設(shè)備。然后點(diǎn)擊必須卡其多因素認(rèn)證按鈕,打開后登錄控制臺就會要輸入MFA設(shè)備的可變驗(yàn)證碼。性能測試/Lite實(shí)踐指南性能測試/Lite實(shí)踐指南調(diào)用API為子賬號創(chuàng)建AccessKey,在調(diào)用SDK接口時傳入該AccessKey,其它使用方式與主賬號保持不變。進(jìn)階使用STS上面章節(jié)只用到了RAM的子賬號功能,這些子賬號都是可以長期正常使用的,發(fā)生泄露之后如果無法及時解除 權(quán)限的話會很危險。繼續(xù)上文的例子,當(dāng)開發(fā)者的App被用戶使用之后,用戶的數(shù)據(jù)要寫入
34、ram-test-app這個Instance,當(dāng)App的 用戶數(shù)據(jù)很多的時候,如何才能安全的授權(quán)給眾多的App用戶上傳數(shù)據(jù)呢?如何保證多個用戶之間存儲的隔離?類似這種場景需要臨時訪問應(yīng)該使用STS來完成。STS可以指定復(fù)雜的策略來對特定的用戶進(jìn)行限制,僅提供最 小的權(quán)限。創(chuàng)建角色之前已經(jīng)解釋過了角色的一些概念,本節(jié)將會給出使用角色的實(shí)際例子。首先,按照上文說述的流程創(chuàng)建一個子賬號ram_test_app,不需要賦予任何權(quán)限,因?yàn)樵诎缪萁巧臅r候會自 動獲得被扮演角色的所有權(quán)限。接下來開始創(chuàng)建角色。這里創(chuàng)建兩個角色,一個用于用戶讀取等操作,一個用于用戶上傳文件。 打開控制臺中的訪問控制,選擇角色
35、管理-新建角色。因?yàn)槭墙巧潜槐旧戆⒗镌瀑~號來使用過的,因此選擇默認(rèn)的即可。創(chuàng)建完成角色之后,角色是沒有任何權(quán)限的,因此這里和上文所述一樣需要新建一個自定義的授權(quán)策略,授權(quán) 策略如下。Statement: Effect: Allow, Action: ots:BatchGet*, ots:Describe*, ots:Get*, ots:List*,Resource: acs:ots:*:*:instance/ram-test-app,acs:ots:*:*:instance/ram-test-app/table/*,Version: 1這里表示的就是對ram-test-app擁有只讀權(quán)限。建
36、立完成之后即可在角色管理里面給RamTestAppReadOnly添加上ram-test-app的只讀授權(quán)。Statement: Statement: Effect: Allow, Action: ots:Create*, ots:Insert*, ots:Put*, ots:Update*, ots:Delete*, ots:BatchWrite*,Resource: acs:ots:*:*:instance/ram-test-app,acs:ots:*:*:instance/ram-test-app/table/*,Version: 1阿里云大數(shù)據(jù)平臺/推薦引擎阿里云大數(shù)據(jù)平臺/推薦引擎現(xiàn)
37、在我們新建好了兩個角色,分別為RamTestAppReadOnly和RamTestAppWrite,分別表示了對于ram- test-app的讀寫權(quán)限。臨時授權(quán)訪問創(chuàng)建了角色之后,接下來就可以使用臨時授權(quán)來訪問TableStore了。不過在正式使用之前,還有一些工作需要完成。扮演角色也是需要授權(quán)的,否則任意子賬號都可以扮演這些角 色會帶來不可預(yù)計的風(fēng)險,因此有扮演對應(yīng)角色需求的子賬號需要顯式的配置權(quán)限。首先在授權(quán)管理策略中新建兩個自定義的授權(quán)策略,分別如下:Version: 1, Statement: Version: 1, Statement: Effect: Allow,Action: s
38、ts:AssumeRole,阿里云大數(shù)據(jù)平臺/機(jī)器翻譯阿里云大數(shù)據(jù)平臺/機(jī)器翻譯Resource: acs:ram:1983407596944237:role/ramtestappreadonlyResource: acs:ram:1983407596944237:role/ramtestappreadonlyVersion: 1, Statement: Version: 1, Statement: Effect: Allow,Action: sts:AssumeRole,Resource: acs:ram:1983407596944237:role/ramtestappwrite這里Reso
39、urce后面填寫的內(nèi)容表示某個角色id,角色的id可以在角色管理-角色詳情中找到。然后將這個兩個授權(quán)賦給ram_test_app這個賬號?,F(xiàn)在一切準(zhǔn)備就緒,可以正式使用STS來授權(quán)訪問了。這里使用一個簡單的STS的python命令行工具sts.py。$python ./sts.py AssumeRole RoleArn=acs:ram:1983407596944237:role/ramtestappreadonly RoleSessionName=usr001 Policy=Version:1,Statement:Effect:Allow,Action:ots:ListTable,ots:De
40、scribeTable,Resource:acs:ot s:*:*:ram-test-app,acs:ots:*:*:ram-test-app/* DurationSeconds=1000 -id=id -secret=secretRoleArn表示的是需要扮演的角色id,角色的id可以在角色管理-角色詳情中找到。$python ./sts.py AssumeRole RoleArn=acs:ram:1983407596944237:role/ramtestappreadonly RoleSessionName=usr001 Policy=Version:1,Statement:Effect:
41、Allow,Action:ots:ListTable,ots:DescribeTable,Resource:acs:ot s:*:*:ram-test-app,acs:ots:*:*:ram-test-app/* DurationSeconds=1000 -id=id -secret=secretRoleArn表示的是需要扮演的角色id,角色的id可以在角色管理-角色詳情中找到。RoleSessionName是一個用來標(biāo)示臨時憑證的名稱,一般來說建議使用不同的應(yīng)用程序用戶來區(qū)分。Policy 標(biāo) 示 的 是 在 扮 演 角 色 的 時 候 額 外 加 上 的 一 個 權(quán) 限 限 制 。 Dur
42、ationSeconds指的是臨時憑證的有效期,單位是秒,最小為900,最大為3600。 id和secret表示的是需要扮演角色的子賬號的AccessKey。這里需要解釋一下這里的Policy,這里傳入的Policy是用來限制扮演角色之后的臨時憑證的權(quán)限。最后臨時憑證 獲得的權(quán)限是角色的權(quán)限和這里傳入的Policy的交集。在扮演角色的時候傳入Policy的原因是為了靈活性,比如上傳文件的時候可以根據(jù)不同的用戶添加對于上傳文 件路徑的限制,這點(diǎn)會在下面的例子展示。現(xiàn)在我們可以來實(shí)際試驗(yàn)STS的作用,先在控制臺創(chuàng)建名稱為test_write_read的Table,主鍵為name,類似為string
43、,然后使用CLI工具測試讀寫操作。python2.7python2.7ots_console-url HYPERLINK http:/TableStoreT/ http:/TableStoreT-id6iTlV1uhiY71mlRt-key clkkuDiq69IJWJ7PnA9PXJxhRWMr3PYou cannot access the instance! You cannot access the instance! ErrorCode: OTSNoPermissionAccessErrorMessage: You have no permission to access the re
44、quested resource, please contact the resource owner.因?yàn)閞am_test_app這個子賬號沒有訪問權(quán)限,因此訪問失敗。使用臨時授權(quán)寫入數(shù)據(jù)現(xiàn)在使用STS來寫入數(shù)據(jù),這里為了簡單,傳入的Policy和角色的Policy一致,過期時間使用默認(rèn)的3600s,SessionName假定為session001。首先使用STS來獲取臨時的憑證。python2.7 ./sts.py AssumeRole RoleArn=acs:ram:1983407596944237:role/ramtestappwrite RoleSessionName=session
45、001 Policy=Statement: Effect: Allow,Action: ots:Create*,ots:BatchWrite*,ots:Put*,ots:Insert*,ots:Update*,ots:Delete*,Resource: acs:ots:*:*:instance/ram-test-app,acs:ots:*:*:instance/ram-test-app/table/*,Version: 1 - id=6iTlV1uhiY71mlRt -secret=clkkuDiq69IJWJ7PnA9PXJxhRWMr3PAssumedRoleUser: Arn: acs:
46、ram:1983407596944237:role/ramtestappwrite/session001, AssumedRoleId: 330629052749595885:session001,Credentials: AccessKeyId: STS.x4gG7KMsfHckQe8nPKLO,AccessKeySecret: IA6CJh5kE5J5m8mR6aQXWbMemSL63Xh7SIhrEcke, Expiration: 2016-01-14T07:58:14Z,SecurityToken: CAESgAQIARKAATDsbhiBSujhVEHoMKm1i17pyZhPTCe
47、1BnVF5YzdNyRos4WuQjalxLkOE/hNNxg25vTo9bljKg4VCcrf h6GkJNujMMcJ4V1i/0RMDLfXwa0/vOHP9W/oSQpwAD5EaWJfqVY/nxwmJ0aKJDHPmSieWssnlmocaOZAgHkpCqQS SDA8GhhTVFMueDRnRzdLTXNmSGNrUWU4blBLTE8iEjMzMDYyOTA1Mjc0OTU5NTg4NSoGdXNyMDAxMPnCkfmjKj oGUnNhTUQ1QuIBCgExGtwBCgVBbGxvdxJnCgxBY3Rpb25FcXVhbHMSBkFjdGlvbhpPCgtvdHM6
48、Q3JlYXRlKgoPb3Rz OkJhdGNoV3JpdGUqCghvdHM6UHV0KgoLb3RzOkluc2VydCoKC290czpVcGRhdGUqCgtvdHM6RGVsZXRlKhJqCg5S ZXNvdXJjZUVxdWFscxIIUmVzb3VyY2UaTgohYWNzOm90czoqOio6aW5zdGFuY2UvcmFtLXRlc3QtYXBwCilhY3M6b3R zOio6KjppbnN0YW5jZS9yYW0tdGVzdC1hcHAvdGFibGUvKkoQMTk4MzQwNzU5Njk0NDIzN1IFMjY4NDJaD0Fzc3VtZ WRSb2xlVXNl
49、cmAAahIzMzA2MjkwNTI3NDk1OTU4ODVyD3JhbXRlc3RhcHB3cml0ZQ=,RequestId: 5F92B248-F200-40F8-A05A-C9C7D018E351使用CLI工具寫入數(shù)據(jù)(版本V1.2開始支持token參數(shù),待發(fā)布)。python2.7 ots_console -url python2.7 ots_console -url HYPERLINK http:/TableStoreT/ http:/TableStoreT -id STS.x4gG7KMsfHckQe8nPKLO-key IA6CJh5kE5J5m8mR6aQXWbMemSL6
50、3Xh7SIhrEcke - token=CAESgAQIARKAATDsbhiBSujhVEHoMKm1i17pyZhPTCe1BnVF5YzdNyRos4WuQjalxLkOE/hNNxg25vTo9bljKg 4VCcrfh6GkJNujMMcJ4V1i/0RMDLfXwa0/vOHP9W/oSQpwAD5EaWJfqVY/nxwmJ0aKJDHPmSieWssnlmocaOZAgHkp CqQSSDA8GhhTVFMueDRnRzdLTXNmSGNrUWU4blBLTE8iEjMzMDYyOTA1Mjc0OTU5NTg4NSoGdXNyMDAxMPnCkfmjKjoGUnNhTUQ1Q
51、uIBCgExGtwBCgVBbGxvdxJnCgxBY3Rpb25FcXVhbHMSBkFjdGlvbhpPCgtvdHM6Q3JlYXRlKgoP b3RzOkJhdGNoV3JpdGUqCghvdHM6UHV0KgoLb3RzOkluc2VydCoKC290czpVcGRhdGUqCgtvdHM6RGVsZXRlKhJq Cg5SZXNvdXJjZUVxdWFscxIIUmVzb3VyY2UaTgohYWNzOm90czoqOio6aW5zdGFuY2UvcmFtLXRlc3QtYXBwCilhY3M 6b3RzOio6KjppbnN0YW5jZS9yYW0tdGVzdC1hcHAvdG
52、FibGUvKkoQMTk4MzQwNzU5Njk0NDIzN1IFMjY4NDJaD0Fzc3VtZWRSb2xlVXNlcmAAahIzMzA2MjkwNTI3NDk1OTU4ODVyD3JhbXRlc3RhcHB3cml0ZQ= 3VtZWRSb2xlVXNlcmAAahIzMzA2MjkwNTI3NDk1OTU4ODVyD3JhbXRlc3RhcHB3cml0ZQ= OTS-TableStoreTest$ put test_write_read 001 age:integer=30A new row has been put in table test_write_read使用臨時授權(quán)
53、讀取數(shù)據(jù)現(xiàn)在使用STS來讀取數(shù)據(jù),這里為了簡單,傳入的Policy和角色的Policy一致,過期時間使用默認(rèn)的3600s,SessionName假定為session002。首先使用STS來獲取臨時的憑證。python2.7 ./sts.py AssumeRole RoleArn=acs:ram:1983407596944237:role/ramtestappreadonly RoleSessionName=session002 Policy=Statement: Effect: Allow,Action: ots:BatchGet*,ots:Describe*,ots:Get*,ots:Lis
54、t*,Resource: acs:ots:*:*:instance/ram-test- app,acs:ots:*:*:instance/ram-test-app/table/*,Version: 1 -id=6iTlV1uhiY71mlRt - secret=clkkuDiq69IJWJ7PnA9PXJxhRWMr3PAssumedRoleUser: Arn: acs:ram:1983407596944237:role/ramtestappreadonly/session002, AssumedRoleId: 396025752746614078:session002,Credentials
55、: AccessKeyId: STS.0qJ2UE8AalcHdQ6n2Q8Q,AccessKeySecret: pSaUjb8O9mU5M76nkC6FHt6wKwbCVYO27gxSEBAu, Expiration: 2016-01-14T08:14:16Z,SecurityToken: CAES6wMIARKAAVtHeNgUnhk132OwDfxZTu8gPQCxfakYLeWha/FxoEYNqBKQTtyI4WPC5mpYuu8+n+yamSYTI2VP Q/z44fcYCNT1bQ0km87F3nb6EJxVvCdJIPNGVwQBMdQl/FLwBVhEGJ9BIwog4fMz
56、whERjqnAP8HbynAIQpG55BHaIX mv53x+GhhTVFMuMHFKMlVFOEFhbGNIZFE2bjJROFEiEjM5NjAyNTc1Mjc0NjYxNDA3OCoKc2Vzc2lvbjAwMjConMz5 oyo6BlJzYU1ENULGAQoBMRrAAQoFQWxsb3cSSwoMQWN0aW9uRXF1YWxzEgZBY3Rpb24aMwoNb3RzOkJhdGNoR 2V0KgoNb3RzOkRlc2NyaWJlKgoIb3RzOkdldCoKCW90czpMaXN0KhJqCg5SZXNvdXJjZUVxdWFscxIIUmVzb3VyY2Ua Tgoh
57、YWNzOm90czoqOio6aW5zdGFuY2UvcmFtLXRlc3QtYXBwCilhY3M6b3RzOio6KjppbnN0YW5jZS9yYW0tdGVzdC 1hcHAvdGFibGUvKkoQMTk4MzQwNzU5Njk0NDIzN1IFMjY4NDJaD0Fzc3VtZWRSb2xlVXNlcmAAahIzOTYwMjU3NTI3 NDY2MTQwNzhyEnJhbXRlc3RhcHByZWFkb25seQ=,RequestId: EE788165-B760-4014-952C-E58ED229C80D使用CLI工具讀取數(shù)據(jù)(版本V1.2開始支持token參數(shù),待發(fā)布)。
58、python2.7 ots_console -url python2.7 ots_console -url HYPERLINK http:/TableStoreT/ http:/TableStoreT -id STS.0qJ2UE8AalcHdQ6n2Q8Q-key pSaUjb8O9mU5M76nkC6FHt6wKwbCVYO27gxSEBAu - token=CAES6wMIARKAAVtHeNgUnhk132OwDfxZTu8gPQCxfakYLeWha/FxoEYNqBKQTtyI4WPC5mpYuu8+n+yamS YTI2VPQ/z44fcYCNT1bQ0km87F3nb6EJxVvCdJIPNGVwQBMdQl/FLwBVhEGJ9BIwog4fMzwhERjqnAP8HbynAIQpG55 BHaIXmv53x+GhhTVFMuMHFKMlVFOEFhbGNIZFE2bjJROFEiEjM5NjAyNTc1Mjc0NjYxNDA3OCoKc2Vzc2lvbjAwMjCo nMz5oyo6BlJzYU1ENULGAQoBMRrAAQoFQWxsb3cSSwoMQWN0aW9uRXF1YWxzEgZBY3Rpb24aMwoNb3RzOkJhd GNoR2V0KgoNb3RzOkRlc2NyaWJlKgoIb3RzOkd
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小雞插畫測試題及答案
- 激光技術(shù)工程師證書考試試題及答案的解析技巧
- 當(dāng)代文化產(chǎn)業(yè)管理試題及答案
- 系統(tǒng)架構(gòu)設(shè)計師考試人際交往題目及答案
- 經(jīng)濟(jì)師保險 試題及答案
- 數(shù)學(xué)概念測試題及答案
- 新課改地區(qū)高三政治期末考試選擇題匯編專練-專題十二發(fā)展中國特色社會主義文化(下)
- 系統(tǒng)架構(gòu)設(shè)計師多領(lǐng)域技術(shù)融合試題及答案
- 系統(tǒng)規(guī)劃與管理師考試常見問題的自我答疑與技巧提升研究試題及答案
- 母豬行為控制的科學(xué)技術(shù)試題及答案
- 湖北省武漢市2025屆高中畢業(yè)生四月調(diào)研考試數(shù)學(xué)試卷及答案(武漢四調(diào))
- 2025-2030中國實(shí)驗(yàn)動物行業(yè)市場深度調(diào)研及市場前瞻與投資戰(zhàn)略研究報告
- 湖南湘潭高新集團(tuán)有限公司招聘考試真題2024
- 2025春季學(xué)期國開電大本科《政府經(jīng)濟(jì)學(xué)》一平臺在線形考(形考任務(wù)1至4)試題及答案
- 2025至2030年中國臺式特定電磁波譜治療器數(shù)據(jù)監(jiān)測研究報告
- 正式戀愛協(xié)議書
- 2024年多媒體應(yīng)用設(shè)計師理論知識試題及答案
- 創(chuàng)建全國文明城市培訓(xùn)
- 2024-2025學(xué)年七年級數(shù)學(xué)人教版(2024)下學(xué)期期中考試模擬卷A卷(含解析)
- 2025年蘭州糧油集團(tuán)有限公司招聘筆試參考題庫含答案解析
- GB 21258-2024燃煤發(fā)電機(jī)組單位產(chǎn)品能源消耗限額
評論
0/150
提交評論