阿里云-表格存儲(chǔ)服務(wù)授權(quán)管理-D_第1頁(yè)
阿里云-表格存儲(chǔ)服務(wù)授權(quán)管理-D_第2頁(yè)
阿里云-表格存儲(chǔ)服務(wù)授權(quán)管理-D_第3頁(yè)
阿里云-表格存儲(chǔ)服務(wù)授權(quán)管理-D_第4頁(yè)
阿里云-表格存儲(chǔ)服務(wù)授權(quán)管理-D_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、表格存儲(chǔ)授權(quán)管理訪問(wèn)控制/STS SDK使用手冊(cè)訪問(wèn)控制/STS SDK使用手冊(cè) PAGE 32 PAGE 32授權(quán)管理RAM和STS介紹RAM和STS是阿里云提供的權(quán)限管理系統(tǒng),詳情可以參考訪問(wèn)控制產(chǎn)品幫助文檔。RAM可以將在主賬號(hào)的權(quán)限范圍內(nèi)創(chuàng)建子賬號(hào),給不同的子 賬號(hào)分配不同的權(quán)限從而達(dá)到授權(quán)管理的目的。STS來(lái)完成對(duì)于臨時(shí)用 戶的訪問(wèn)授權(quán)。背景介紹AccessKey的情況下如何安全的授權(quán)別人訪問(wèn)。 因?yàn)橐坏┲髻~號(hào)的AccessKey暴露出去的話會(huì)帶來(lái)極大的安全風(fēng)險(xiǎn),別人可以隨意操作該賬號(hào)下所有的資源,盜取重要信息等。相對(duì)于RAM提供的長(zhǎng)效控制機(jī)制,STS提供的是一種臨時(shí)訪問(wèn)授權(quán),通過(guò)S

2、TS可以返回臨時(shí)的AccessKey和(TableStore)。一般來(lái)說(shuō)從STS獲取的權(quán)限會(huì) 受到更加嚴(yán)格的限制,并且擁有時(shí)間限制,因此這些信息泄露之后對(duì)于系統(tǒng)的影響也很小。這些功能在下文中會(huì)以實(shí)際的例子來(lái)說(shuō)明?;靖拍钜韵率且恍┗靖拍畹暮?jiǎn)單解釋:子賬號(hào):從阿里云的主賬號(hào)中創(chuàng)建出來(lái)的子賬號(hào),在創(chuàng)建的時(shí)候可以分配獨(dú)立的密碼和權(quán)限,每個(gè)子 賬號(hào)擁有自己AccessKey,可以和阿里云主賬號(hào)一樣正常的完成有權(quán)限的操作。一般來(lái)說(shuō),這里的子 賬號(hào)可以理解為具有某種權(quán)限的用戶,可以被認(rèn)為是一個(gè)具有某些權(quán)限的操作發(fā)起者。角色(Role):表示某種操作權(quán)限的虛擬概念,但是沒(méi)有獨(dú)立的登錄密碼和AccessKe

3、y。子賬號(hào)可以 扮演角色,扮演角色的時(shí)候的權(quán)限是該角色自身的權(quán)限。RDSRDS/API授權(quán)策略(Policy):用來(lái)定義權(quán)限的規(guī)則,比如允許用戶讀取、或者寫入某些資源。資源(Resource):代表用戶可訪問(wèn)的云資源,比如TableStore所有的Instance、或者某個(gè)Instance、或者某個(gè)Instance下面的某個(gè)Table等。子賬號(hào)和角色可以類比為某個(gè)個(gè)人和其身份的關(guān)系,某人在公司的角色是員工,在家里的角色是父親,在不同 的場(chǎng)景扮演不同的角色,但是還是同一個(gè)人。在扮演不同的角色的時(shí)候也就擁有對(duì)應(yīng)角色的權(quán)限。單獨(dú)的員工 或者父親概念并不能作為一個(gè)操作的實(shí)體,只有有人扮演了之后才是一個(gè)

4、完整的概念。這里還可以體現(xiàn)一個(gè)重 要的概念,那就是角色可以被多個(gè)不同的個(gè)人同時(shí)扮演。完成角色扮演之后,該個(gè)人就自動(dòng)擁有該角色的所有 權(quán)限。這里再用一個(gè)例子解釋一下。某個(gè)阿里云用戶,名為alice,其在TableStore有兩個(gè)Instance,alice_a和alice_b。alice對(duì)這兩個(gè)Instance都擁有完全的權(quán)限。為了避免阿里云賬號(hào)的AccessKey泄露導(dǎo)致安全風(fēng)險(xiǎn),alice使用RAM創(chuàng)建了兩個(gè)子賬號(hào)bob和carol,bob對(duì)alice_a擁有讀寫權(quán)限,carol對(duì)alice_b擁有讀寫權(quán)限。bob和carol都擁有獨(dú)立的Instance,而且alice可以很方便的在控制臺(tái)取

5、消泄 露用戶的權(quán)限。現(xiàn)在因?yàn)槟承┰?,需要授?quán)給別人讀取alice_a中的Table,這種情況下不應(yīng)該直接把bob的AccessKey透露出去,那么,這個(gè)時(shí)候可以新建一個(gè)角色,比如AliceAReader,給這個(gè)角色賦予讀取alice_a的權(quán)限。但是請(qǐng)注意,這個(gè)時(shí)候AliceAReader還是沒(méi)法直接用的,因?yàn)椴⒉淮嬖趯?duì)應(yīng)AliceAReader的AccessKey,AliceAReader現(xiàn)在僅僅表示一個(gè)擁有訪問(wèn)alice_a權(quán)限的一個(gè)虛擬實(shí)體。為了能獲取臨時(shí)授權(quán),這個(gè)時(shí)候可以調(diào)用STS的AssumeRole接口,告訴STS,bob將要扮演AliceAReader這個(gè)角色,如果成功,STS會(huì)

6、返回一個(gè)臨時(shí)的AccessKeyId、AccessKeySecret還有SecurityToken作為訪問(wèn)憑證。將這個(gè)憑證發(fā)給需要訪問(wèn)的臨時(shí)用戶就可以獲得訪問(wèn)alice_a的臨時(shí)權(quán) 限了。憑證過(guò)期的時(shí)間在調(diào)用AssumeRole的時(shí)候指定。為什么RAM和STS這么復(fù)雜乍一看RAM和STS的概念是很復(fù)雜的,但這是為了權(quán)限控制的靈活性而犧牲了部分的易用性。將子賬號(hào)和角色分開(kāi),主要是為了將執(zhí)行操作的實(shí)體和代表權(quán)限集合的虛擬實(shí)體分開(kāi)。如果用戶本身需要的權(quán) 限很多,比如讀寫權(quán)限,但是實(shí)際上每次操作只需要其中的一部分權(quán)限,那么我們就可以創(chuàng)建兩個(gè)角色,分別 具有讀寫權(quán)限,然后創(chuàng)建一個(gè)沒(méi)有任何權(quán)限但是可以擁有

7、扮演這兩個(gè)角色權(quán)限的用戶。當(dāng)用戶需要讀的時(shí)候就 可以臨時(shí)扮演其中擁有讀權(quán)限的角色,寫的時(shí)候同理,將每次操作中權(quán)限泄露的風(fēng)險(xiǎn)降低。而且通過(guò)扮演角色 可以將權(quán)限授予其他的阿里云用戶,更加方便了協(xié)同使用。當(dāng)然,提供了靈活性并不代表一定要使用全部的功能,應(yīng)該根據(jù)需求來(lái)使用其中的一個(gè)子集即可。比如不需要 帶過(guò)期時(shí)間的臨時(shí)訪問(wèn)憑證的話,完全可以只使用RAM的子賬號(hào)功能而無(wú)需使用STS。下面會(huì)用范例提供一些RAM和STS的使用指南,以及使用上的建議。示例在操作上會(huì)盡量使用控制臺(tái)和命令行 等操作方式,減少實(shí)際代碼使用。如果需要使用代碼來(lái)實(shí)現(xiàn)建議參看RAM和STS的API手冊(cè)??焖偃腴T這個(gè)示例從一個(gè)沒(méi)有任何In

8、stance的阿里云用戶開(kāi)始,以下內(nèi)容中出現(xiàn)的AccessKey請(qǐng)?zhí)鎿Q成用戶自己對(duì)應(yīng)的AccessKey。在測(cè)試中使用到了CLI工具,這是TableStore的命令行工具,可以直接通過(guò)命令行讀寫數(shù)據(jù),獲取的地址為表格 存儲(chǔ)CLI工具包。安裝依賴:python安裝依賴:pythononekey_INSTALL.py參數(shù)配置:pythonots_console-urlhttp:/.-idAccessID-key執(zhí)行命令:如建表,ctpk1:string,pk2:integerreadrt:1writert:1詳細(xì)用法和其它命令請(qǐng)參考CLI工具包內(nèi)的幫助文檔。假定該用戶是一個(gè)移動(dòng)開(kāi)發(fā)者,目前只有一個(gè)

9、ram-test-dev的Instance用來(lái)做開(kāi)發(fā)測(cè)試等功能。子賬號(hào)訪問(wèn)那么,第一件要做的事情就是不再使用主賬號(hào)來(lái)訪問(wèn)這個(gè)Instance,這樣可以規(guī)避AccessKey或者密碼泄露導(dǎo) 致的問(wèn)題。在控制臺(tái)上操作請(qǐng)點(diǎn)擊進(jìn)入訪問(wèn)控制,如果之前沒(méi)有使用過(guò)的需要先點(diǎn)擊開(kāi)通公測(cè)服務(wù)。進(jìn)入用戶管理頁(yè)面。這里顯示還沒(méi)有任何用戶,那么我們點(diǎn)擊右上角的新建用戶來(lái)創(chuàng)建一個(gè)擁有和主賬號(hào)一樣完全訪問(wèn)TableStore權(quán)限的子賬號(hào),記住要勾選生成AccessKey的選項(xiàng)。最后一步會(huì)生成該賬號(hào)的AccessKey,一定要在這一步保存下來(lái)用于后續(xù)的訪問(wèn)。性能測(cè)試/性能測(cè)試視頻教程性能測(cè)試/性能測(cè)試視頻教程返回用戶管理界

10、面,這里顯示我們創(chuàng)建了一個(gè)名為ram_test的賬號(hào)。創(chuàng)建完成之后,該子賬號(hào)還是沒(méi)有任何權(quán) 限的,點(diǎn)擊右邊的授權(quán)鏈接,給該賬號(hào)賦予TableStore的完全訪問(wèn)權(quán)限。授權(quán)完成之后如果該賬號(hào)需要控制臺(tái)登錄等權(quán)限也可以點(diǎn)擊右側(cè)的管理鏈接來(lái)完成操作。$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.可見(jiàn)一般的操作已經(jīng)完全可以使用這個(gè)賬號(hào)來(lái)完成所有的操作,避免泄露主賬號(hào)的AccessKey讀寫權(quán)限分離當(dāng)需要對(duì)部分用戶共享TableStore某個(gè)Instance的數(shù)據(jù),但又不希望數(shù)據(jù)被修改,這時(shí)可以創(chuàng)建一個(gè)具有只讀 權(quán)

12、限的子賬號(hào),做到讀寫權(quán)限分離。那么同上文的操作方式,創(chuàng)建一個(gè)ram_test_pub的賬號(hào),在授權(quán)管理的地方選擇ReadOnly即可,如下圖所示。OSS/周邊工具OSS/周邊工具使用該賬號(hào)的AccessKey同樣測(cè)試建表和刪表的權(quán)限,這里的AccessKey為ram_test_pub的,實(shí)際試驗(yàn)中AccessKey請(qǐng)?zhí)鎿Q成自己試驗(yàn)使用的。阿里云大數(shù)據(jù)平臺(tái)/郡縣圖治阿里云大數(shù)據(jù)平臺(tái)/郡縣圖治$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.可見(jiàn)確實(shí)已經(jīng)無(wú)法使用ram_test_pub這個(gè)賬號(hào)建表和刪表了。自定義權(quán)限Action定義包含兩類API:Instance讀寫相關(guān)的管理類API;表和行

14、讀寫相關(guān)的數(shù)據(jù) 類API??梢愿鶕?jù)Action設(shè)置開(kāi)放或限制用戶可以訪問(wèn)的API。API名稱/ActionAPI類別說(shuō)明ListInstance管理類獲取Instance列表,僅控制臺(tái)調(diào)用InsertInstance管理類創(chuàng)建Instance,僅控制臺(tái)調(diào)用GetInstance管理類獲取Instance信息,僅控制臺(tái)調(diào)用DeleteInstance管理類刪除Instance,僅控制臺(tái)調(diào)用ListTable數(shù)據(jù)類獲取Table列表,控制臺(tái)和SDK調(diào)用CreateTable數(shù)據(jù)類創(chuàng)建Table,控制臺(tái)和SDK調(diào)用UpdateTable數(shù)據(jù)類更新Table信息,控制臺(tái)和SDK調(diào)用DescribeTa

15、ble數(shù)據(jù)類獲取Table信息,控制臺(tái)和SDK調(diào)用DeleteTable數(shù)據(jù)類刪除Table,控制臺(tái)和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)策略時(shí),每個(gè)action需要添加ots:前綴,多個(gè)action以逗號(hào)分隔,并且支持星號(hào)通配 符(包括

16、前綴匹配和后綴匹配)。下面是一些典型的Action定義。單個(gè)API。Action: ots:GetRowAction: ots:GetRow多個(gè)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的資源由多個(gè)字段組成:產(chǎn)品、地域、用戶ID、實(shí)例名和表名,每個(gè)字段支持星號(hào)通配符(包括前 綴匹配和后綴匹配),格式如下,其中xxx表示變量。產(chǎn)品固定為ots,地域?yàn)橛⑽目s寫(如cn-hangzhou, 服務(wù)節(jié)點(diǎn)地域信息請(qǐng)參考),用戶ID為阿里云賬號(hào)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開(kāi)頭的Instance及下面的所有Table。Resource: acs:o

19、ts:*:*:instance/abc*Resource: acs:ots:*:*:instance/abc*所有以abc開(kāi)頭的Instance下面的所有以xyz開(kāi)頭的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訪問(wèn)的資源管理類API主要為Instance相關(guān)的操作,僅由官網(wǎng)控制臺(tái)調(diào)用,對(duì)這類API的Action和Resource定義,將影響用 戶使用控制臺(tái)。下面訪問(wèn)的資源省略了acs:ots:region:user_id:前綴,只描述instance和table部分。API名稱/Action訪問(wèn)的資源ListInstanceinstance/*InsertInstanceinstance/instance_nameGetInstanceinsta

21、nce/instance_nameDeleteInstanceinstance/instance_name數(shù)據(jù)類API訪問(wèn)的資源數(shù)據(jù)類API主要為Table和行相關(guān)的操作,官網(wǎng)控制臺(tái)和SDK都會(huì)調(diào)用,對(duì)這類API的Action和Resource定義,將影響用戶使用控制臺(tái)。下面訪問(wèn)的資源省略了acs:ots:region:user_id:前綴,只描述instance和table部 分。API名稱/Action訪問(wèn)的資源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常見(jiàn)問(wèn)題說(shuō)明是通過(guò)字符串匹配進(jìn)行驗(yàn)證的,并且星號(hào)通配符區(qū)分前綴和后綴匹配。如 果Resource定義為acs:ots:*:*:instance/*/,則無(wú)法匹配acs:ots:*:*:instance/abc。如果Resourc

24、e定 義為acs:ots:*:*:instance/abc,則無(wú)法匹配acs:ots:*:*:instance/abc/table/xyz。登陸TableStore控制臺(tái)管理實(shí)例資源,需要授予用戶acs:ots:region:user_id:instance/*資源的讀 取權(quán)限,因?yàn)榭刂婆_(tái)需要獲取實(shí)例的列表。對(duì)于批量操作API(如BatchGetRow和BatchWriteRow),后端服務(wù)會(huì)對(duì)被訪問(wèn)的每張Table分別鑒 權(quán),只有所有Table都鑒權(quán)通過(guò)操作才能被執(zhí)行,否則會(huì)返回權(quán)限錯(cuò)誤。Condition定義目前Policy支持訪問(wèn)IP限制、是否通過(guò)https訪問(wèn)、是否通過(guò)MFA(多因素認(rèn)

25、證)訪問(wèn)和訪問(wèn)時(shí)間限制等多種鑒 權(quán)條件,TableStore所有API都已經(jīng)支持這些條件。訪問(wèn)IP限制訪問(wèn)控制可以限制訪問(wèn)TableStore的源IP地址,并且支持根據(jù)網(wǎng)段進(jìn)行過(guò)濾。下面是一些典型的使用場(chǎng)景。- 限制多個(gè)IP地址,如只允許IP地址為11和11的請(qǐng)求訪問(wèn)。Statement: Effect: Allow,Action: ots:*, Resource: acs:ots:*:*:*, Condition: IpAddress: acs:SourceIp: 11,11,Version: 1- 限制單個(gè)IP地址和IP網(wǎng)段,如只允許IP地址為11或11/24網(wǎng)段的請(qǐng)求訪問(wèn)。Stateme

26、nt: Effect: Allow,Action: ots:*, Resource: acs:ots:*:*:*, Condition: IpAddress: acs:SourceIp: 11, 11/24,Version: 1https訪問(wèn)限制訪問(wèn)控制可以限制是否通過(guò)https訪問(wèn),下面是典型的使用場(chǎng)景。性能測(cè)試/Lite用戶使用手冊(cè)性能測(cè)試/Lite用戶使用手冊(cè)Statement: Statement: Effect: Allow,Action: ots:*, Resource: acs:ots:*:*:*, Condition: Bool: acs:SecureTransport: tr

27、ue,Version: 1MFA訪問(wèn)限制訪問(wèn)控制可以限制是否通過(guò)MFA(多因素認(rèn)證)訪問(wèn),下面是典型的使用場(chǎng)景。限制請(qǐng)求必須通過(guò)MFA訪問(wèn)。Statement: Effect: Allow,Action: ots:*, Resource: acs:ots:*:*:*, Condition: Bool: acs:MFAPresent : true,Version: 1訪問(wèn)時(shí)間限制訪問(wèn)控制可以限制請(qǐng)求的訪問(wèn)時(shí)間,即只允許或拒絕在某個(gè)時(shí)間點(diǎn)范圍之前的請(qǐng)求。下面是典型的使用場(chǎng)景。2016年1月1號(hào)凌晨之前用戶可以訪問(wèn),之后就不能再訪問(wèn)。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典型使用場(chǎng)景結(jié)合上面的Action、Resource和Condition的定義,下面我們給出一些典型使用場(chǎng)景的Policy定義和授權(quán)方法。多種授權(quán)條件對(duì)于訪問(wèn)IP地址為11/24網(wǎng)段的用戶,可以對(duì)所有名稱為online-01和online-02

29、的Instance執(zhí)行 讀寫操作(包括Instance下面的所有Table),且要求只能在2016-01-01 00:00:00之前訪問(wèn)和通過(guò)https訪問(wèn)。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)給子賬號(hào)。拒絕請(qǐng)求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子賬號(hào)訪問(wèn)現(xiàn)在子賬號(hào)已經(jīng)可以登錄TableStore控制臺(tái),對(duì)Instance和Table進(jìn)行管理。并且子

32、賬號(hào)可以調(diào)用SDK接口,訪 問(wèn)數(shù)據(jù)類API。登錄控制臺(tái)首先使用主賬號(hào)進(jìn)入RAM控制臺(tái),進(jìn)入用戶管理頁(yè)面,點(diǎn)擊子賬號(hào)列表右方的管理按鈕。在子賬號(hào)用戶詳情頁(yè)面,點(diǎn)擊啟用控制臺(tái)登錄,然后重置密碼。然后通過(guò)RAM子賬號(hào)登錄鏈接登錄控制臺(tái)(鏈接可以在RAM控制臺(tái)概述頁(yè)面查看),登錄成功后,點(diǎn)擊左邊表 格存儲(chǔ)圖標(biāo),進(jìn)入控制臺(tái)。啟用多因素認(rèn)證多因素認(rèn)證(Multi-Factor Authentication, MFA)是一種簡(jiǎn)單有效的最佳安全實(shí)踐方法,它能夠在用戶名和密碼之外再額外增加一層安全保護(hù)。啟用 MFA 后,用戶登錄阿里云網(wǎng)站時(shí),系統(tǒng)將要求輸入用戶名和密碼(第一安全要素),然后要求輸入來(lái)自其MFA設(shè)

33、備的可變驗(yàn)證碼(第二安全要素)。這些多重要素結(jié)合起來(lái)將 為您的賬戶提供更高的安全保護(hù)。在用戶詳情頁(yè)面,點(diǎn)擊啟用虛擬MFA設(shè)備,按照幫助流程啟用MFA設(shè)備。然后點(diǎn)擊必須卡其多因素認(rèn)證按鈕,打開(kāi)后登錄控制臺(tái)就會(huì)要輸入MFA設(shè)備的可變驗(yàn)證碼。性能測(cè)試/Lite實(shí)踐指南性能測(cè)試/Lite實(shí)踐指南調(diào)用API為子賬號(hào)創(chuàng)建AccessKey,在調(diào)用SDK接口時(shí)傳入該AccessKey,其它使用方式與主賬號(hào)保持不變。進(jìn)階使用STS上面章節(jié)只用到了RAM的子賬號(hào)功能,這些子賬號(hào)都是可以長(zhǎng)期正常使用的,發(fā)生泄露之后如果無(wú)法及時(shí)解除 權(quán)限的話會(huì)很危險(xiǎn)。繼續(xù)上文的例子,當(dāng)開(kāi)發(fā)者的App被用戶使用之后,用戶的數(shù)據(jù)要寫入

34、ram-test-app這個(gè)Instance,當(dāng)App的 用戶數(shù)據(jù)很多的時(shí)候,如何才能安全的授權(quán)給眾多的App用戶上傳數(shù)據(jù)呢?如何保證多個(gè)用戶之間存儲(chǔ)的隔離?類似這種場(chǎng)景需要臨時(shí)訪問(wèn)應(yīng)該使用STS來(lái)完成。STS可以指定復(fù)雜的策略來(lái)對(duì)特定的用戶進(jìn)行限制,僅提供最 小的權(quán)限。創(chuàng)建角色之前已經(jīng)解釋過(guò)了角色的一些概念,本節(jié)將會(huì)給出使用角色的實(shí)際例子。首先,按照上文說(shuō)述的流程創(chuàng)建一個(gè)子賬號(hào)ram_test_app,不需要賦予任何權(quán)限,因?yàn)樵诎缪萁巧臅r(shí)候會(huì)自 動(dòng)獲得被扮演角色的所有權(quán)限。接下來(lái)開(kāi)始創(chuàng)建角色。這里創(chuàng)建兩個(gè)角色,一個(gè)用于用戶讀取等操作,一個(gè)用于用戶上傳文件。 打開(kāi)控制臺(tái)中的訪問(wèn)控制,選擇角色

35、管理-新建角色。因?yàn)槭墙巧潜槐旧戆⒗镌瀑~號(hào)來(lái)使用過(guò)的,因此選擇默認(rèn)的即可。創(chuàng)建完成角色之后,角色是沒(méi)有任何權(quán)限的,因此這里和上文所述一樣需要新建一個(gè)自定義的授權(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這里表示的就是對(duì)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ù)平臺(tái)/推薦引擎阿里云大數(shù)據(jù)平臺(tái)/推薦引擎現(xiàn)

37、在我們新建好了兩個(gè)角色,分別為RamTestAppReadOnly和RamTestAppWrite,分別表示了對(duì)于ram- test-app的讀寫權(quán)限。臨時(shí)授權(quán)訪問(wèn)創(chuàng)建了角色之后,接下來(lái)就可以使用臨時(shí)授權(quán)來(lái)訪問(wèn)TableStore了。不過(guò)在正式使用之前,還有一些工作需要完成。扮演角色也是需要授權(quán)的,否則任意子賬號(hào)都可以扮演這些角 色會(huì)帶來(lái)不可預(yù)計(jì)的風(fēng)險(xiǎn),因此有扮演對(duì)應(yīng)角色需求的子賬號(hào)需要顯式的配置權(quán)限。首先在授權(quán)管理策略中新建兩個(gè)自定義的授權(quán)策略,分別如下:Version: 1, Statement: Version: 1, Statement: Effect: Allow,Action: s

38、ts:AssumeRole,阿里云大數(shù)據(jù)平臺(tái)/機(jī)器翻譯阿里云大數(shù)據(jù)平臺(tái)/機(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)容表示某個(gè)角色id,角色的id可以在角色管理-角色詳情中找到。然后將這個(gè)兩個(gè)授權(quán)賦給ram_test_app這個(gè)賬號(hào)。現(xiàn)在一切準(zhǔn)備就緒,可以正式使用STS來(lái)授權(quán)訪問(wèn)了。這里使用一個(gè)簡(jiǎ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是一個(gè)用來(lái)標(biāo)示臨時(shí)憑證的名稱,一般來(lái)說(shuō)建議使用不同的應(yīng)用程序用戶來(lái)區(qū)分。Policy 標(biāo) 示 的 是 在 扮 演 角 色 的 時(shí) 候 額 外 加 上 的 一 個(gè) 權(quán) 限 限 制 。 Dur

42、ationSeconds指的是臨時(shí)憑證的有效期,單位是秒,最小為900,最大為3600。 id和secret表示的是需要扮演角色的子賬號(hào)的AccessKey。這里需要解釋一下這里的Policy,這里傳入的Policy是用來(lái)限制扮演角色之后的臨時(shí)憑證的權(quán)限。最后臨時(shí)憑證 獲得的權(quán)限是角色的權(quán)限和這里傳入的Policy的交集。在扮演角色的時(shí)候傳入Policy的原因是為了靈活性,比如上傳文件的時(shí)候可以根據(jù)不同的用戶添加對(duì)于上傳文 件路徑的限制,這點(diǎn)會(huì)在下面的例子展示?,F(xiàn)在我們可以來(lái)實(shí)際試驗(yàn)STS的作用,先在控制臺(tái)創(chuàng)建名稱為test_write_read的Table,主鍵為name,類似為string

43、,然后使用CLI工具測(cè)試讀寫操作。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這個(gè)子賬號(hào)沒(méi)有訪問(wèn)權(quán)限,因此訪問(wèn)失敗。使用臨時(shí)授權(quán)寫入數(shù)據(jù)現(xiàn)在使用STS來(lái)寫入數(shù)據(jù),這里為了簡(jiǎn)單,傳入的Policy和角色的Policy一致,過(guò)期時(shí)間使用默認(rèn)的3600s,SessionName假定為session001。首先使用STS來(lái)獲取臨時(shí)的憑證。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開(kāi)始支持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使用臨時(shí)授權(quán)

53、讀取數(shù)據(jù)現(xiàn)在使用STS來(lái)讀取數(shù)據(jù),這里為了簡(jiǎn)單,傳入的Policy和角色的Policy一致,過(guò)期時(shí)間使用默認(rèn)的3600s,SessionName假定為session002。首先使用STS來(lái)獲取臨時(shí)的憑證。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開(kāi)始支持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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論