利用 AWS STS 假定角色權限管理 AWS

您是否在组织不断发展壮大时,难以管理对AWS资源的访问?不用担心!AWS安全令牌服务(STS)将会拯救你!

通过AWS STS角色假定权限,您可以为用户和应用程序临时授予对AWS资源的访问权限,而无需长期凭证。在本教程中,您将学会更高效地管理资源,并确保其安全可靠。

继续阅读,轻松获得对AWS基础设施和资源的完全控制!

先决条件

本教程将进行实际演示。要跟随操作,请确保您拥有一个已启用计费的AWS账户,但是一个免费套餐账户就足够了。

创建一个没有访问权限的IAM用户

在使用AWS STS角色假定权限之前,您首先需要创建一个没有分配任何权限的IAM用户。这个操作可能看起来有些违反直觉,但非常重要,因为IAM用户不能直接假定角色。他们必须通过AWS STS服务通过假定角色获取临时安全凭证。

按照以下步骤创建一个没有任何权限的IAM用户:

1. 打開您喜歡的網絡瀏覽器,並使用您的根 AWS 帳戶登錄 AWS 管理控制台

2. 接下來,從服務列表中搜索並選擇 IAM,以訪問 IAM 控制台。

Accessing the IAM console

3. 在 IAM 控制台上,導航到「用戶」(左側窗格),並點擊「添加用戶」以開始添加新用戶。

Initiating adding a new user

4. 現在,配置下面的用戶詳細信息。此操作使您的 IAM 用戶可以使用其用戶名和密碼登錄 AWS 管理控制台。

  • 用戶名 – 為新用戶提供名稱,並勾選下面的複選框以提供用戶訪問 AWS 管理控制台的權限。
  • 選擇「我要創建 IAM 用戶」選項,因為您正在創建 IAM 用戶。
  • 控制台密碼 – 選擇「自動生成的密碼」選項以生成稍後可以更改的密碼。

配置完成後,點擊「下一步」繼續進行 IAM 用戶創建。

Configuring the user details

5. 在下一頁上,保留默認值,並點擊「下一步」跳過設置用戶權限。

無需為此用戶分配任何權限,因為您正在創建一個零權限並可以訪問 AWS 管理控制台的用戶。

沒有權限的用戶在假定賦予他們必要權限的角色之前無法採取任何操作。

Skipping setting permissions

6. 接下來,請查看您配置的用戶詳細信息,並點擊「創建用戶」以完成 IAM 用戶的創建。

Finalizing creating the new IAM user

7. 複製並保存 IAM 使用者的登入 URL 和密碼。您稍後需要此信息以使用 IAM 使用者登入。

Taking note of the IAM user’s sign-in URL and password

8. 現在,返回 IAM 控制台,導航到使用者頁面(左窗格),並點擊新建的使用者名稱以訪問其摘要頁面。

Accessing the newly-created user’s summary page

9. 最後,在摘要頁面上,注意使用者的 Amazon Resource Name(ARN),這是使用者的唯一標識符。您稍後在為使用者分配角色時需要此 ARN。

Noting down the newly-created user’s ARN

準備自定義信任政策

擁有專用 IAM 使用者後,您準備好假定該角色,並授予對 AWS 資源的訪問權限。但是,IAM 使用者要假定角色,該角色必須首先信任使用者。

通過創建自定義信任政策,您將建立 IAM 使用者和該角色之間的“信任關係”。此信任關係指定了哪些使用者或帳戶可以假定該角色,以及在什麼條件下。

為準備自定義信任政策,請按照以下步驟操作:

1. 在 IAM 控制台的角色(左窗格)中,單擊“創建角色”以開始創建新角色。

Initiating creating a new role

2. 接下來,單擊“自定義信任政策”選項以創建自定義政策。

Choosing to create a custom trust policy

3. 在文本字段中輸入以下政策,如下所示,然後單擊“下一步”。請將 YOUR_ARN 替換為您在“創建零訪問權限的 IAM 使用者”部分最後一步中注意到的 IAM 使用者的 ARN。

以下是允許指定的IAM使用者或角色承擔特定IAM角色的基本自訂信任政策示例,其中包含以下字段:

Field Function
Version Specifies the version of the policy language.
Statement Contains the policy statement(s).
Effect Specifies whether the statement allows or denies access, with Allow, in this case, granting access.
Principal Specifies the entity allowed to assume the role; in this example, it is an empty string.
Action Specifies the action the IAM user or role is allowed to perform. The sts:AssumeRole value allows the user to assume the specified IAM role.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
               "AWS": "YOUR_ARN"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
Creating a custom trust policy

4. 在下一頁中,搜尋並選擇顯示的政策清單中的AmazonEC2FullAccess,然後按「下一步」。此政策授予對所有EC2資源的完全訪問權限。

Selecting the AmazonEC2FullAccess policy

5. 接下來,為您的自訂信任政策提供一個名稱(例如,AWSEC2FULLACCESS)

provide a name for your custom trust policy

6. 將其他設定保持不變,然後按「建立角色」以完成角色的建立。

在這一點上,IAM(sts_user)應該能夠假定該角色。假定後,使用者將能夠訪問所有EC2資源,例如列舉、創建和刪除EC2實例等。

Creating the new role

7. 點擊新建的角色,如下所示,以查看其詳細資料。

Accessing the role’s details

8. 最後,複製在控制台中切換角色和保存的連結。稍後在使用IAM使用者(sts_user)登入控制台時,您將需要此連結切換角色。

Copying the link to switch roles in the console

切換並使用IAM使用者承擔角色

創建角色後,您現在可以使用專用IAM使用者承擔該角色。您將使用IAM使用者登入AWS控制台,然後切換到您創建的角色以測試EC2訪問權限。

若要查看如何切換並使用IAM使用者承擔角色的步驟:

1. 前往您在“創建零訪問權限的IAM用戶”部分第七步中記錄的登錄URL,並使用IAM用戶的密碼登錄。

?通過使用不同的瀏覽器或無痕窗口登錄,避免與您的根帳戶衝突。

Logging into the AWS Management Console with the IAM user

2. 登錄後,前往EC2控制台,您將看到許多以紅色顯示的API錯誤,如下所示。這些錯誤表明IAM用戶無權訪問EC2資源。

要解決這些錯誤,您必須假設您在下一步中創建的角色,以獲得對所有EC2資源(AWSEC2FULLACCESS)的訪問權限。當您在AWS中假設角色時,您暫時具有與該角色相關聯的權限。

Getting errors due to lack of permissions

3. 打開一個新的瀏覽器標籤,並前往“準備自定義信任政策”部分最後一步中記錄的“切換角色連結”。

此連結是一個特殊的URL,可直接將您帶到AWS管理控制台中的切換角色頁面。切換角色頁面允許您假設不同的角色,這些角色確定您可以訪問哪些AWS資源。

4. 現在,為會話提供一個描述性的顯示名稱,並點擊切換角色以假設該角色。顯示名稱可以幫助您跟踪您的活動會話。

假設角色後,您的瀏覽器將重定向到具有所選角色許可權的AWS管理控制台。

Switching roles

5. 再次前往EC2控制台,以確認您的IAM用戶已被授予對EC2資源的訪問權限。

如果一切順利,您將不再看到之前看到的 API 錯誤,因為您現在已使用角色的權限登錄,包括對 EC2 資源的訪問。

Confirming the IAM user has been successfully granted access to EC2 resources

最後,點擊您會話的顯示名稱(右上角),然後選擇切換回切換回原始 IAM 用戶。

您將從當前會話中注銷,並以原始 IAM 用戶的身份登錄,擁有其原始設置的權限。這個操作是減少意外執行不必要操作風險的最佳實踐。

Switching back to the original IAM user

結論

在 AWS 中扮演角色是一個強大的功能,它使您能夠在不共享永久憑證的情況下授予對資源的臨時訪問權限。在本教程中,您已經學會了如何利用 AWS STS 扮演角色的特權。

此時,您可以自信地扮演一個具有有限權限的角色,以確保資源的安全性並最大程度地減少任何意外或惡意操作的潛在影響。

AWS 管理控制台是開始使用 AWS 服務(如扮演角色)的絕佳方式。但是為什麼不試試通過 AWS 命令行界面(CLI)扮演角色?探索並將 AWS CLI 集成到您的自動化腳本中,可以提供更多高級功能和功能。

Source:
https://adamtheautomator.com/aws-sts-assume-role/