在AWS中,IAM可能对于新用户来说使用和理解都是一个挑战。但不用担心!如果你对IAM在AWS中如何管理用户权限感到困惑,那么你来对地方了。在这里,你将了解IAM的基本概念,通过一系列逐步构建的示例来掌握IAM的可能性。
在本教程中,通过一步步的示例演示,你将学习IAM的基本概念。
准备好了吗?深呼吸,开始吧!
先决条件
本教程将进行实际演示。如果你想跟着操作,请确保你有一台电脑和一个AWS账户。如果你还没有AWS账户,可以申请一个免费层的账户。
在AWS中创建IAM用户
在深入了解IAM的工作原理之前,首先通过创建用户来开始本教程。用户可用于各种用途。但在本教程中,你将创建一些没有任何权限、不属于任何组的用户,他们对任何资源都没有访问权限。
1. 登录到AWS控制台。本演示使用名为cloud_user的用户名,但你的用户名可能不同。

2. 在AWS控制台中,輸入IAM在搜索框中,然後點擊彈出的IAM服務,如下所示。您的瀏覽器將重新導向到IAM儀表板。

IAM是一個全球服務,這意味著用戶及其權限適用於您整個AWS帳戶/區域。如果多個人共享一個AWS帳戶(這在整個公司開發團隊的情況下非常常見),則需要確保適當的IAM人員輪換。
此外,您可以在us-east區域內創建一個EC實例。實例是區域性的。但是,AWS身份和訪問管理控制不是區域性的。分配給用戶的權限將適用於用戶連接到的EC實例的任何區域。

4. 在IAM儀表板上,點擊左側窗格中的用戶,然後點擊頁面右上角的添加用戶以初始化添加用戶。

現在使用以下配置用戶詳細信息:
- 在下面顯示的用戶名字段中提供用戶名。例如,將用戶名設置為user-1。
- 啟用密碼 – AWS管理控制台訪問選項以允許用戶登錄到AWS管理控制台。
- 選擇自定義密碼選項作為控制台密碼,並在文本字段中提供安全密碼。
- 取消選中要求重置密碼選項,以便用戶在下次登錄時不會被提示創建新密碼,然後點擊下一步:權限。

5. 跳過設置權限,並點擊下一步:標籤,因為您正在創建一個沒有權限的使用者。

6. 也跳過添加標籤,點擊下一步:審查。

7. 審查用戶詳細信息,並點擊創建用戶以完成用戶的創建。

創建用戶後,您將看到如下的成功畫面。

8. 現在返回到IAM儀表板的使用者頁面,並點擊新創建的用戶(user-1)以查看用戶的信息。打開您的user-1

在權限和組標籤下,您可以看到user-1沒有與之關聯的任何權限,也不是任何組的成員。


在安全憑證標籤下,您將看到user-1可能擁有的不同訪問密鑰。您可以在此標籤上上傳一個SSH公鑰,這對於您的AWS EC2實例非常有用。

訪問建議者標籤顯示了user-1直接或通過其他服務訪問的服務,以及user-1上次訪問該服務的時間。

9. 最後,重複進程(步驟三至七),創建另外兩個用戶(user-2和user-3)。返回IAM儀表板的使用者頁面,您將看到類似以下的列表。

創建用戶組
現在您已經創建了使用者,是時候創建群組了。您將使用AWS管理策略和JSON文件來創建群組。
在本教程中,您將創建三個群組:
- EC2-Admin:提供查看、啟動和停止EC2實例的權限
- EC2-Support:提供對EC2的只讀訪問權限
- S3-Support:提供對S3的只讀訪問權限
開始創建用戶群組:
1. 在IAM儀表板中,點擊左側窗格上的用戶群組,然後點擊創建群組。
2. 在創建用戶群組頁面上提供用戶群組名稱(EC2-Admin),如下所示。

保留默認權限,然後點擊創建群組以完成創建EC2-Admin群組。

創建新群組後,您將在頁面頂部收到已創建EC2-Admin用戶群組的消息,如下所示。然後,您的瀏覽器會自動重定向到用戶群組頁面(第三步)。

3. 在群組名稱列下點擊EC2-Admin群組,以查看群組的摘要信息,您可以在此處添加內聯策略(第四步)。

4. 現在點擊權限標籤 -> 添加權限 -> 創建內聯策略以創建內聯策略。內聯策略通常直接與用戶關聯,通常用於一次性情況的權限申請。
以下是翻譯:
例如,您的團隊正在將舊的 EC2 環境遷移到新的環境。您希望確保舊的 EC2 實例的管理員具有啟動/停止的訪問權限,並將安全組的設置複製到新的 EC2 實例。

5. 在 創建策略 頁面上,點擊下面顯示的 JSON 標籤,以打開 JSON 編輯器,您將在其中創建策略。

6. 在編輯器字段中粘貼以下代碼(策略),然後點擊 審閱策略 以創建內聯策略。此內聯策略是由 AWS 或 AWS 帳戶內的管理員預先構建的,您可以使用、自定義或編輯以滿足您的確切需求。
有了此策略,EC2-Admin 群組的成員可以啟動("ec2:StartInstances"
)、停止("ec2:StopInstances"
)和查看("ec2:Describe*"
)EC2 實例。他們被允許("Effect": "Allow"
)對所有資源("Resource": "*"
)執行操作。這些操作本質上與 AWS 的程序性或 API 呼叫相關聯。
EC2-Admin 群組成員還具有查看所有彈性負載均衡(Action": "elasticloadbalancing:Describe
)、列出指標(cloudwatch:ListMetrics
)、獲取指標統計信息 cloudwatch:GetMetricStatistics
和描述指標(cloudwatch:Describe
)的權限。
CloudWatch 指標已自動配置到您的 EC 實例,對於 Auto Scaling 服務也是如此。

7. 審查策略摘要,然後點擊 保存更改 以保存策略。

8. 現在,再次導航到您的 IAM 儀表板並像在第二步驟中所做的那樣初始化創建一個群組。但這次,將用戶組名稱命名為 EC2-Support。
向下滾動,在附加權限策略搜尋框中搜索AmazonEC2ReadOnlyAccess,以將該策略附加到該群組(EC2-Support):
AmazonEC2ReadOnlyAccess是一個由管理員創建的可重用的受管策略,類似於內聯策略,因為它也可以附加到多個用戶或用戶組。但與內聯策略不同,此類策略是可重複使用的,並且可以在您的組織內共享,或與您帳戶中的所有 AWS 帳戶共享。
A managed policy is a shared policy. As a result, all users or groups of users who use the shared policy will have updated permissions automatically when the policy is updated.
此自動更新功能使得受管策略比內聯策略更具吸引力。對於內聯策略,如果策略發生更改,則必須由管理員更新每個權限。
選中AmazonEC2ReadOnlyAccess選項,然後單擊創建群組以完成創建群組。

10. 現在,重複執行第八到第九步,使用 AmazonS3ReadOnlyAccess 受管策略創建 S3-Support 群組。創建 S3-Support 群組後,您將看到類似於以下顯示的每個群組均定義了權限的群組列表。

將用戶添加到適當的群組
您已經創建了具有定義權限的用戶和群組。現在,是時候將用戶添加到適當的群組中了。您將打開每個群組的摘要頁面,並手動將用戶添加到該群組中。
下表顯示了您將添加每個用戶的正確群組:
Users | In-group | Permissions |
---|---|---|
user-1 | S3-Support | Read-only access to S3 Bucket |
user-2 | EC2-Support | Read-only access to EC2 Instance |
user-3 | EC2-Admin | Full EC2 Access (View/Start/Stop) |
1. 在您的 IAM 儀表板中,導航至 使用者組 頁面,並點擊下方顯示的 S3-Support 組以訪問該組的摘要頁面。

2. 接下來,點擊 使用者 標籤 -> 新增使用者 以初始化將使用者添加到該組的過程。您的瀏覽器將重新導向到一個頁面,在該頁面上您將看到一個尚未屬於任何組的使用者列表(第三步)。

3. 勾選 使用者-1 前面的方塊,然後點擊 新增使用者 以將該使用者添加到 S3-Support 組中。然後,您的瀏覽器將自動重新導向到 S3-Support 組的摘要頁面。

下面,您可以看到 使用者-1 現在是 S3-Support 組的一部分。

4. 重複步驟一至三,將使用者-2 和使用者-3 添加到其正確的組中。
5. 最後,導航至使用者組頁面,您將看到這些組現在每個都有一個使用者,就像下面的截圖中一樣。

測試使用者權限是否正常運作
您已完全根據其自身權限創建了使用者所屬的組。但是,您如何知道它們是否有效?是時候驗證權限是否按預期工作,有多種方法可以做到這一點。其中一種最常見的方法是使用基於 Web 的 AWS 管理控制台。
1. 前往您的 IAM 儀表板並在右側面板上複製 IAM 使用者登錄 URL,如下所示。

2. 在您的網絡瀏覽器中,前往您先前記下的登錄 URL(第一步),並使用使用者-1 的憑據登錄。 Google Chrome 和 Firefox 是此任務的最佳推薦瀏覽器。

3. 在搜索框中键入 S3,然后单击下面显示的 S3 链接,以访问Amazon S3 Buckets页面。

4. 现在,单击 Create bucket 初始化创建一个 S3 bucket。

5. 在 General configuration 部分输入 bucket 名称,然后单击 Create bucket 尝试创建一个 S3 bucket。


如果你记得,你将AmazonS3ReadOnlyAccess策略附加到user-1上,这只给予user-1对S3桶的只读权限。因此,如果user-1尝试创建、删除或更新S3 bucket,将会弹出下面显示的错误消息。
下面的错误消息表明你设置给user-1的权限正常工作。

请注意,user-1也没有任何EC2权限。因此,为了双重检查,请导航到您的EC2仪表板,您将会看到像下面截图中显示的许多API错误。
您之所以遇到这些错误,是因为最小权限原则(PoLP)。PoLP是指任何给定的操作系统用户账户或进程应具有完成工作所需的绝对最低权限。

6. 现在,注销用户1并登录用户2,然后导航到您的EC2控制台。

7. 单击任何正在运行的EC2实例查看用户2的权限。如下图所示,您将获取关于实例的信息,如实例ID,公有IPv4地址等等。

8. 单击页面右侧的实例状态,并选择停止实例、重启实例或终止实例选项,以测试用户2的权限是否有效。

请记住,用户2仅具有对EC2实例的只读访问权限(AmazonEC2ReadOnlyAccess)。因此,如果用户尝试操作EC2实例,将弹出下面的错误消息。
如果出现下面的错误,表示用户2的权限配置正确。

9. 最后,注销用户2,然后登录用户3,并尝试操作您帐户中正在运行的任何EC2实例。由于用户3具有完全的EC2权限,您可以启动、停止或终止实例而不会收到错误消息。
结论
在本教程中,您已经学会了如何创建具有定义策略的IAM用户和用户组。您还了解了如何验证权限是否按预期工作,方法是尝试更改EC2实例状态并尝试创建S3存储桶。
到目前为止,您已经为IAM用户和组管理用户权限设置了基本配置。当然,您可以随时向您的账户添加更多用户,并根据需要应用更多策略。
现在,要建立在您新获得的知识基础上,下一步是什么?也许可以研究如何设置您的EC2服务进行自动扩展以与IAM一起使用。