RAM和STS介紹
RAM(Resource Access Management)是阿里云提供的管理用戶身份與資源訪問(wèn)權(quán)限的服務(wù)。STS(Security Token Service)是阿里云提供的一種臨時(shí)訪問(wèn)權(quán)限管理服務(wù)。RAM提供RAM用戶和RAM角色兩種身份。其中,RAM角色不具備永久身份憑證,而只能通過(guò)STS獲取可以自定義時(shí)效和訪問(wèn)權(quán)限的臨時(shí)身份憑證,即安全令牌(STS Token)。
了解RAM和STS的功能特性和優(yōu)勢(shì),請(qǐng)參見(jiàn)什么是訪問(wèn)控制和什么是STS。
背景介紹
RAM和STS解決的一個(gè)核心問(wèn)題是如何在不暴露主賬號(hào)的AccessKey的情況下,安全地授權(quán)他人訪問(wèn)。因?yàn)橐坏┲髻~號(hào)的AccessKey被泄露,會(huì)帶來(lái)極大的安全風(fēng)險(xiǎn):獲得該賬號(hào)AccessKey的人可任意操作該賬號(hào)下所有的資源,盜取重要信息等。
RAM提供的是一種長(zhǎng)期有效的權(quán)限控制機(jī)制。通過(guò)創(chuàng)建RAM用戶,并授予RAM用戶相應(yīng)的權(quán)限,將不同的權(quán)限分給不同的用戶。RAM用戶的 AccessKey也不能泄露。即使RAM用戶泄露也不會(huì)造成全局的信息泄露。一般情況下,RAM用戶長(zhǎng)期有效。
相對(duì)于RAM提供的長(zhǎng)效控制機(jī)制,STS提供的是一種臨時(shí)訪問(wèn)授權(quán)。通過(guò)調(diào)用STS,獲得臨時(shí)的AccessKey和Token。可以將臨時(shí)AccessKey和Token發(fā)給臨時(shí)用戶,用來(lái)訪問(wèn)相應(yīng)的資源。從STS獲取的權(quán)限會(huì)受到更加嚴(yán)格的限制,并且具有時(shí)間限制。因此,即使出現(xiàn)信息泄露的情況,影響相對(duì)較小。
使用場(chǎng)景示例,請(qǐng)參見(jiàn)使用示例。
基本概念
使用RAM和STS涉及的基本概念,請(qǐng)參見(jiàn)訪問(wèn)控制相關(guān)概念。
RAM用戶和角色可以類比為個(gè)人和其身份的關(guān)系。如,某人在公司的角色是員工,在家里的角色是父親。同一人在不同的場(chǎng)景扮演不同的角色。在扮演不同角色的時(shí)候,擁有對(duì)應(yīng)角色的權(quán)限。角色本身并不是一個(gè)操作的實(shí)體,只有用戶扮演了該角色之后才是一個(gè)完整的操作實(shí)體。并且,一個(gè)角色可以被多個(gè)不同的用戶同時(shí)扮演。
使用示例
為避免阿里云賬號(hào)的AccessKey泄露而導(dǎo)致安全風(fēng)險(xiǎn),某阿里云賬號(hào)管理員使用RAM創(chuàng)建了兩個(gè)RAM用戶,分別命名為A和B,并為A和B生成獨(dú)立的AccessKey。A擁有讀權(quán)限,B擁有寫(xiě)權(quán)限。 管理員可以隨時(shí)在RAM控制臺(tái)取消RAM用戶的權(quán)限。
現(xiàn)在因?yàn)槟承┰颍枰跈?quán)給其他人臨時(shí)訪問(wèn)物聯(lián)網(wǎng)平臺(tái)接口的權(quán)限。這種情況下,不能直接把A的AccessKey透露出去,而應(yīng)該新建一個(gè)角色C,并給這個(gè)角色授予讀取物聯(lián)網(wǎng)平臺(tái)接口的權(quán)限。但請(qǐng)注意,目前角色C還無(wú)法直接使用。因?yàn)椴⒉淮嬖趯?duì)應(yīng)角色C的AccessKey,角色C僅是一個(gè)擁有訪問(wèn)物聯(lián)網(wǎng)平臺(tái)接口權(quán)限的虛擬實(shí)體。
需調(diào)用STS的AssumeRole接口,獲取訪問(wèn)物聯(lián)網(wǎng)平臺(tái)接口的臨時(shí)授權(quán)。在調(diào)用STS的請(qǐng)求中,RoleArn的值需為角色C的Arn。如果調(diào)用成功,STS會(huì)返回臨時(shí)的AccessKeyId、AccessKeySecret和SecurityToken作為訪問(wèn)憑證(憑證的過(guò)期時(shí)間,在調(diào)用AssumeRole的請(qǐng)求中指定)。將這個(gè)憑證發(fā)給需要訪問(wèn)的用戶,該用戶就可以獲得訪問(wèn)物聯(lián)網(wǎng)平臺(tái)接口的臨時(shí)權(quán)限。
為什么RAM和STS的使用這么復(fù)雜?
雖然RAM和STS的概念和使用比較復(fù)雜,但這是為了賬號(hào)的安全性和權(quán)限控制的靈活性而犧牲了部分易用性。
將RAM用戶和角色分開(kāi),主要是為了將執(zhí)行操作的實(shí)體和代表權(quán)限集合的虛擬實(shí)體分開(kāi)。如果某用戶需要使用多種權(quán)限,如讀/寫(xiě)權(quán)限,但是實(shí)際上每次操作只需要其中的一部分權(quán)限,那么就可以創(chuàng)建兩個(gè)角色。這兩個(gè)角色分別具有讀或?qū)憴?quán)限。然后,創(chuàng)建一個(gè)可以扮演這兩個(gè)角色的RAM用戶。當(dāng)用戶需要讀權(quán)限的時(shí)候,就可以扮演其中擁有讀權(quán)限的角色;使用寫(xiě)權(quán)限的時(shí)候同理。這樣可以降低每次操作中權(quán)限泄露的風(fēng)險(xiǎn)。而且,通過(guò)扮演角色,可以將角色權(quán)限授予其他用戶,更加方便了協(xié)同使用。
STS對(duì)權(quán)限的控制更加靈活。如按照實(shí)際需求設(shè)置有效時(shí)長(zhǎng)。但是,如果需要一個(gè)長(zhǎng)期有效的臨時(shí)訪問(wèn)憑證,則可以只適用RAM用戶管理功能,而無(wú)需使用STS。
在后面的章節(jié)中,我們將提供一些RAM和STS的使用指南和使用示例。如果您需要了解更多RAM和STS的代碼詳情,請(qǐng)參見(jiàn)RAM API和STS API。