的 Identity and Access Management - AWS Amplify

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

的 Identity and Access Management

AWS Identity and Access Management (IAM) 是一種 AWS 服務,可協助管理員安全地控制對 AWS 資源的存取。IAM 管理員控制誰可以成為身分驗證(已登入) 和已授權(具有權限)來使用 Amplify 資源。IAM 是一種您可以免費使用的 AWS 服務。

Audience

如何使用 AWS Identity and Access Management (IAM),取決於您在 Amplify 中執行的工作。

服務使用者— 如果您使用 Amplify 執行任務,您的管理員會為您提供您需要的登入資料和許可。隨著您為了執行作業而使用的 Amplify 功能數量變多,您可能會需要額外的許可。了解存取的管理方式可協助您向管理員請求正確的許可。如果您無法存取「Amplify」中的某項功能,請參閱對 Identity and Access 進行故障診斷

服務管理員— 如果您負責公司內的 Amplify 資源,您應該具備的完整存取權限。您的任務是判斷員工應存取的 Amplify 功能及資源。您接著必須將請求提交給您的 IAM 管理員,來變更您服務使用者的許可。檢閱此頁面上的資訊,了解 IAM 的基本概念。若要進一步了解貴公司可搭配 Amplify 使用 IAM 的方式,請參閱Amplify 如何與 IAM 搭配運作

IAM 管理員— 如果您是 IAM 管理員,建議您掌握如何撰寫政策以管理 Amplify 存取權的詳細資訊。若要檢視您 Amplify 在 IAM 中使用的以身分為基礎政策範例,請參閱的以身分為基礎的政策範例

使用身分來驗證

身份驗證是使用身分登入資料登入 AWS 的方式。如需有關使用 AWS 管理主控台登入的詳細資訊,請參閱。以 IAM 使用者或根使用者身分登入 AWS 管理主控台中的IAM 使用者指南

您必須以 AWS 帳戶根使用者身份、IAM 使用者身份,或假設為 IAM 角色進行驗證 (登入至 AWS)。您也可以使用貴公司的單一登入身份驗證,甚至使用 Google 或 Facebook 進行登入。在上述案例中,您的管理員會使用 IAM 角色預先設定聯合身分。當您使用來自其他公司的身份驗證來存取 AWS 時,您是間接地擔任角色。

若要直接登入 AWS 管理主控台,請使用您的密碼與您的根使用者電子郵件地址或您的 IAM 使用者名稱搭配。您可以使用根使用者或 IAM 使用者存取金鑰,以程式設計方式存取 AWS。AWS 提供軟體開發套件和命令列工具,藉由使用您的登入資料,以密碼編譯方式簽署您的請求。如果您不使用 AWS 工具,則必須自行簽署請求。請使用 Signature 第 4 版來執行此作業,它是針對傳入 API 請求進行身份驗證的通訊協定。如需驗證請求的詳細資訊,請參閱簽章版本 4 簽署程序中的AWS 一般參考資料

無論您使用何種身份驗證方法,您可能還需要提供額外的安全性資訊。例如,AWS 建議您使用多重驗證 (MFA) 來提高帳戶的安全性。如需進一步了解,請參閱AWS 中使用多重因素身分 (MFA)中的IAM 使用者指南

AWS 帳戶根使用者

當您首次建立 AWS 帳戶,您會先有單一的登入身分,可以完整存取帳戶中所有 AWS 服務與資源。此身分稱為 AWS 帳戶「根使用者」,是藉由您用來建立帳戶的電子郵件地址和密碼以登入並存取。強烈建議您不要以根使用者處理日常作業,即使是管理作業。反之,請遵循僅以根使用者建立您第一個 &IAM; 使用者的最佳實務。接著請妥善鎖定根使用者登入資料,只用來執行少數的帳戶與服務管理作業。

IAM 使用者和群組

IAM 使用者是您 AWS 帳戶內的一種實體,具備單一人員或應用程式的特定許可。IAM 使用者可有長期登入資料 (例如,使用者名稱和密碼或一組存取金鑰)。若要了解如何產生存取金鑰,請參閱管理 IAM 使用者的存取金鑰中的IAM 使用者指南。當您產生 IAM 使用者的存取金鑰時,請確認您已檢視且安全地儲存金鑰對。您在這之後便無法復原私密存取金鑰。屆時您必須改為產生新的存取金鑰對。

IAM 群組是一種指定 IAM 使用者集合的實體。您無法以群組身分登入。您可以使用群組來一次為多名使用者指定許可。群組可讓管理大量使用者許可的過程變得更為容易。例如,您可以擁有一個名為 IAMAdmins 的群組,並給予該群組管理 IAM 資源的許可。

使用者與角色不同。使用者只會與單一人員或應用程式建立關聯,但角色的目的是在由任何需要它的人員取得。使用者擁有永久的長期登入資料,但角色僅提供暫時登入資料。如需進一步了解,請參閱何時建立 IAM 使用者 (而不是角色)中的IAM 使用者指南

IAM 角色

IAM 角色是您 AWS 帳戶內的一種實體,具備特定許可。它類似 IAM 使用者,但不與特定的人員相關聯。您可以透過切換角色暫時擔任 AWS 管理主控台中的 IAM 角色。您可以透過呼叫 AWS CLI 或 AWS API 操作或使用自訂的 URL 來擔任角色。如需使用角色的方法詳細資訊,請參閱使用 IAM 角色中的IAM 使用者指南

使用臨時登入資料的 IAM 角色在下列情況中非常有用:

  • 暫時 IAM 使用者許可 – 使用者可以擔任 IAM 角色來暫時針對特定任務採用不同的許可。

  • 聯合身分使用者存取 - 非建立 IAM 使用者,而是使用來自 AWS Directory Service、您的企業使用者目錄或 Web 身分供應商的現有身分。這些稱為「聯合身分使用者」。透過身份供應商請求存取時,AWS 會將角色指派給聯合身份使用者。如需有關聯合身分使用者的詳細資訊,請參閱聯合身分使用者和角色中的IAM 使用者指南

  • 跨帳戶存取 – 您可以使用 IAM 角色,允許不同帳戶中的某人 (信任的委託人) 存取您帳戶的資源。角色是授予跨帳戶存取的主要方式。但是,針對某些 AWS 服務,您可以將政策直接連接到資源 (而非使用角色做為代理)。若要了解跨帳戶存取之角色和資源型政策間的差異,請參閱IAM 角色與資源型政策的不同中的IAM 使用者指南

  • 跨服務存取 – 有些 AWS 服務會使用其他 AWS 服務中的功能。例如,當您在服務中進行呼叫時,該服務通常會在 Amazon EC2 中執行應用程式或將物件存放在 Amazon S3 中。服務可能會使用呼叫委託人的許可、使用服務角色或使用服務連結角色來執行此作業。

    • 委託人許可 – 當您使用 IAM 使用者或角色在 AWS 中執行動作時,您會被視為委託人。原則能將許可授予委託人。當您使用某些服務時,您可能會執行一個動作,然後在不同的服務中觸發另一個動作。在此情況下,您必須具有執行這兩個動作的許可。若要查看某個動作是否需要原則中的其他相依動作,請參閱AWS Amplify 的動作、資源和條件金鑰中的服務授權參考

    • 服務角色 – 服務角色是服務擔任的 IAM 角色,可代表您執行動作。服務角色提供的存取權僅限在您的帳戶內,不能用來授予存取其他帳戶中的服務。IAM 管理員可以從 IAM 內建立、修改和刪除服務角色。如需詳細資訊,請參閱「」建立角色以將許可委派給 AWS 服務中的IAM 使用者指南

    • 服務連結角色 – 服務連結角色是一種連結到 AWS 服務的服務角色類型。服務可以擔任代表您執行動作的角色。服務連結角色會顯示在您的 IAM 帳戶中,並由該服務所擁有。IAM 管理員可以檢視,但不能編輯服務連結角色的許可。

  • 在 Amazon EC2 上執行的應用程式 - 針對在 EC2 執行個體上執行並提出 AWS CLI 和 AWS API 請求的應用程式,您可以使用 IAM 角色來管理臨時登入資料。這是在 EC2 執行個體內存放存取金鑰的較好方式。若要指派 AWS 角色給 EC2 執行個體並提供其所有應用程式使用,您可以建立連接到執行個體的執行個體描述檔。執行個體描述檔包含該角色,並且可讓 EC2 執行個體上執行的程式取得臨時登入資料。如需詳細資訊,請參閱「」使用 IAM 角色為在 Amazon EC2 執行個體上執行的應用程式授予許可中的IAM 使用者指南

若要了解是否要使用 IAM 角色還是 IAM 使用者,請參閱何時建立 IAM 角色 (而不是使用者)中的IAM 使用者指南

使用政策管理存取權

您可以透過建立政策並將其連接到 IAM 身分或 AWS 資源,在 AWS 中控制存取。政策為 AWS 中的一個物件,當與實體或資源相關聯時,會定義它們的許可。您可以根使用者或 IAM 使用者的身分登入,或者可以擔任 IAM 角色。當您接著提出請求時,AWS 會評估相關身分型或資型原則。政策中的許可,決定是否允許或拒絕請求。大部分政策以 JSON 文件形式存放在 AWS 中。如需 JSON 政策文件的結構和內容的詳細資訊,請參閱。JSON 政策概觀中的IAM 使用者指南

管理員可以使用 AWS JSON 原則來指定誰可以存取哪些內容。也就是說,這委託人可以執行動作在什麼resources,以及在條件

每個 IAM 實體 (使用者或角色) 在開始時都沒有許可。換句話說,根據預設,使用者無法執行任何作業,甚至也無法變更他們自己的密碼。若要授予使用者執行動作的許可,管理員必須將許可政策連接到使用者。或者,管理員可以將使用者新增到具備預定許可的群組。管理員將許可給予群組時,該群組中的所有使用者都會獲得那些許可。

IAM 政策定義該動作的許可,無論您使用何種方法來執行操作。例如,假設您有一個允許 iam:GetRole 動作的政策。具有該政策的使用者可以從 AWS 管理主控台、AWS CLI 或 AWS API 取得角色資訊。

以身分為基礎的政策

以身份為基礎的原則是可以附加到身份 (使用者、使用者群組或角色) 的 JSON 許可原則文件。這些原則可控制身份在何種條件下能對哪些資源執行哪些動作。若要了解如何建立身分型政策,請參閱建立 IAM 政策中的IAM 使用者指南

身分類型政策可進一步分類成內嵌政策受管政策。內嵌政策會直接內嵌到單一使用者、群組或角色。受管政策則是獨立的政策,您可以將這些政策連接到 IAM 帳戶中的多個使用者、群組和角色。受管政策包含 AWS 受管政策和客戶受管政策。若要了解如何選擇受管政策或內嵌政策的詳細資訊,請參閱在受管政策與內嵌政策之間進行選擇中的IAM 使用者指南

以資源為基礎的政策

以資源為基礎的政策是連接到資源的 JSON 政策文件。以資源為基礎的政策範例為 IAM角色信任原則和 Amazon S3儲存貯體政策。在支援以資源為基礎的原則的服務中,服務管理員可以使用它們來控制對特定資源的存取。對於附加原則的資源,原則會定義指定的主參與者可以對該資源執行的動作以及在何種條件下執行的動作。您必須在資源型原則中指定委託人。主參與者可以包括帳戶、使用者、角色、聯合身份使用者或 AWS 服務。

資源型原則是位於該服務中的內嵌原則。您無法在以資源為基礎的原則中使用 IAM 的 AWS 受管原則。

存取控制清單 (ACL)

存取控制清單 (ACL) 可控制哪些委託人 (帳戶成員、使用者或角色) 擁有存取某資源的許可。ACL 類似於以資源為基礎的原則,但它們不使用 JSON 原則文件格式。

Amazon S3、AWS WAF 和 Amazon VPC 是支援 ACL 的服務範例。若要進一步了解 ACL,請參閱存取控制清單 (ACL) 概觀中的Amazon Simple Service 開發人員指南

其他政策類型

AWS 支援其他較少見的原則類型。這些政策類型可設定較常見政策類型授予您的最大許可。

  • 許可界限 - 許可界限是一種進階功能,可供您設定身份型原則能授予 IAM 實體 (IAM 使用者或角色) 的最大許可。您可以為實體設定許可界限。所產生的許可會是實體的身分類型政策和其許可界限的交集。會在 Principal 欄位中指定使用者或角色的資源類型政策則不會受到許可界限限制。所有這類政策中的明確拒絕都會覆寫該允許。如需有關許可界限的詳細資訊,請參閱IAM 實體的許可界限中的IAM 使用者指南

  • 服務控制原則 (SCP) – SCP 是為 AWS Organizations 中組織或組織單位 (OU) 指定最大許可的 JSON 原則。AWS Organizations 是一種分組服務,可集中管理您企業擁有的多個 AWS 帳戶。若您啟用組織中的所有功能,您可以將服務控制政策 (SCP) 套用到任何或所有帳戶。SCP 會限制成員帳戶中的實體許可,包括每個 AWS 帳戶根使用者。如需 Organizations 和 SCP 的詳細資訊,請參閱SCP 的運作方式中的AWS Organizations 使用者指南

  • 工作階段原則 – 工作階段原則是一種進階原則,您可以在透過編寫程式的方式建立角色或聯合身份使用者的暫時工作階段時,做為參數傳遞。所產生工作階段的許可會是使用者或角色的身分類型政策和工作階段政策的交集。許可也可以來自資源類型政策。所有這類政策中的明確拒絕都會覆寫該允許。如需詳細資訊,請參閱「」工作階段政策中的IAM 使用者指南

多種政策類型

將多種政策類型套用到請求時,其結果形成的許可會更為複雜、更加難以理解。若要了解 AWS 在涉及多種政策類型時如何判斷是否允許一項請求,請參閱。政策評估邏輯中的IAM 使用者指南