IAM 識別碼 - AWS Identity and Access Management

IAM 識別碼

IAM 對使用者、使用者群組、角色、政策和伺服器憑證使用一些不同的識別碼。本節介紹識別碼以及何時使用識別碼。

易用名稱和路徑

當您建立使用者、角色、使用者群組或政策,或上傳伺服器憑證時,請為其提供好記的名稱。例如 Bob、TestApp1、Developers、ManageCredentialsPermissions 或 ProdServerCert 等等。

如果您使用 IAM API 或 AWS Command Line Interface (AWS CLI) 建立 IAM 資源,則還可以為資源新增選用路徑。您可以使用單一路徑,也可以作為資料夾結構巢狀處理多個路徑。例如,您可以使用巢狀路徑 /division_abc/subdivision_xyz/product_1234/engineering/ 以符合您的公司的組織結構。然後,您可以建立一個政策,以允許該路徑中的所有使用者存取政策模擬器 API。若要檢視此政策,請參閱 IAM:根據使用者路徑存取政策模擬器 API。如需如何指定易記名稱的資訊,請參閱使用者 API 文件。如需有關如何使用路徑的其他範例的詳細資訊,請參閱 IAM ARN

當您使用 AWS CloudFormation 建立資源時,可以為使用者、使用者群組和角色指定路徑以及指定客戶受管政策。

如果您在相同路徑中有使用者和使用者群組,則 IAM 不會自動將該使用者放入該使用者群組中。例如,您可以建立一個開發人員使用者群組並將路徑指定為 /division_abc/subdivision_xyz/product_1234/engineering/。如果您建立名為 Bob 的使用者並向他新增相同的路徑,則不會自動將 Bob 放入開發人員使用者群組中。IAM 不會根據使用者或使用者群組的路徑強制執行使用者或使用者群組之間的任何邊界。具有不同路徑的使用者可以使用相同的資源 (假設他們已被授予這些資源的許可)。AWS 帳戶中 IAM 資源的數量和大小有限制。如需詳細資訊,請參閱IAM 和 AWS STS 配額

IAM ARN

大多數的資源都有易用名稱 (例如,使用者名稱 Bob 或使用者群組名稱 Developers)。但是,許可原則語言要求您使用下列 Amazon Resource Name (ARN) 格式指定一或多個資源。

arn:partition:service:region:account:resource

位置:

  • partition 會識別資源的分割區。對於標準 AWS 區域,分割區為 aws。如果您有其他分割區的資源,則該分割區為 aws-partitionname。例如,中國 (北京) 區域中的資源分割區就是 aws-cn。您無法在不同分割區的帳戶之間委派存取權

  • service 會識別 AWS 產品。IAM 資源一律會使用 iam

  • region 會識別資源的區域。對 IAM 資源而言,此項目一律空白。

  • account 會指定沒有連字號的 AWS 帳戶 ID 或 AWS 帳戶的別名。

  • resource 依名稱識別特定資源。

您可以使用以下語法指定 IAM 和 AWS STS ARN。ARN 的區域部分是空白的,因為 IAM 資源是全域。

語法:

arn:aws:iam::account:root arn:aws:iam::account:user/user-name-with-path arn:aws:iam::account:group/group-name-with-path arn:aws:iam::account:role/role-name-with-path arn:aws:iam::account:policy/policy-name-with-path arn:aws:iam::account:instance-profile/instance-profile-name-with-path arn:aws:sts::account:federated-user/user-name arn:aws:sts::account:assumed-role/role-name/role-session-name arn:aws:iam::account:mfa/virtual-device-name-with-path arn:aws:iam::account:u2f/u2f-token-id arn:aws:iam::account:server-certificate/certificate-name-with-path arn:aws:iam::account:saml-provider/provider-name arn:aws:iam::account:oidc-provider/provider-name

以下許多範例包括 ARN 的資源部分中的路徑。無法在 AWS Management Console 中建立或操控路徑。若要使用路徑,必須使用 AWS API、AWS CLI 或 Tools for Windows PowerShell 來處理資源。

範例:

arn:aws:iam::123456789012:root arn:aws:iam::123456789012:user/JohnDoe arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/JaneDoe arn:aws:iam::123456789012:group/Developers arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_A/Developers arn:aws:iam::123456789012:role/S3Access arn:aws:iam::123456789012:role/application_abc/component_xyz/RDSAccess arn:aws:iam::123456789012:role/aws-service-role/access-analyzer.amazonaws.com/AWSServiceRoleForAccessAnalyzer arn:aws:iam::123456789012:role/service-role/QuickSightAction arn:aws:iam::123456789012:policy/UsersManageOwnCredentials arn:aws:iam::123456789012:policy/division_abc/subdivision_xyz/UsersManageOwnCredentials arn:aws:iam::123456789012:instance-profile/Webserver arn:aws:sts::123456789012:federated-user/JohnDoe arn:aws:sts::123456789012:assumed-role/Accounting-Role/JaneDoe arn:aws:iam::123456789012:mfa/JaneDoeMFA arn:aws:iam::123456789012:u2f/user/JohnDoe/default (U2F security key) arn:aws:iam::123456789012:server-certificate/ProdServerCert arn:aws:iam::123456789012:server-certificate/division_abc/subdivision_xyz/ProdServerCert arn:aws:iam::123456789012:saml-provider/ADFSProvider arn:aws:iam::123456789012:oidc-provider/GoogleProvider

下列範例提供更多詳細資料,協助您了解不同類型 IAM和 AWS STS 資源的 ARN 格式。

  • 帳戶中的 IAM 使用者:

    注意

    每個 IAM 使用者名稱都是唯一的且不區分大小寫。

    arn:aws:iam::123456789012:user/JohnDoe
  • 另一個具有反映組織結構圖之路徑的使用者:

    arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/JaneDoe
  • IAM 使用者群組:

    arn:aws:iam::123456789012:group/Developers
  • 具有路徑的 IAM 使用者群組:

    arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_A/Developers
  • IAM 角色:

    arn:aws:iam::123456789012:role/S3Access
  • 服務連結角色

    arn:aws:iam::123456789012:role/aws-service-role/access-analyzer.amazonaws.com/AWSServiceRoleForAccessAnalyzer
  • 服務角色

    arn:aws:iam::123456789012:role/service-role/QuickSightAction
  • 受管政策:

    arn:aws:iam::123456789012:policy/ManageCredentialsPermissions
  • 可以與 EC2 執行個體建立關聯的執行個體描述檔:

    arn:aws:iam::123456789012:instance-profile/Webserver
  • 在 IAM 中識別為 "Paulo" 的聯合身分使用者:

    arn:aws:sts::123456789012:federated-user/Paulo
  • 有人擔任「會計 - 角色」角色,角色工作階段名稱為 "Mary" 的活動工作階段:

    arn:aws:sts::123456789012:assumed-role/Accounting-Role/Mary
  • 指派給名為 Jorge 之使用者的多重因素認證裝置:

    arn:aws:iam::123456789012:mfa/Jorge
  • 伺服器憑證:

    arn:aws:iam::123456789012:server-certificate/ProdServerCert
  • 具有反映組織結構圖之路徑的伺服器憑證:

    arn:aws:iam::123456789012:server-certificate/division_abc/subdivision_xyz/ProdServerCert
  • 身分提供者 (SAML 和 OIDC):

    arn:aws:iam::123456789012:saml-provider/ADFSProvider arn:aws:iam::123456789012:oidc-provider/GoogleProvider

另一個重要的 ARN 是 根使用者 ARN。雖然這不是 IAM 資源,仍建議您熟悉此 ARN 的格式。它通常會用在政策的 Principal 元素

  • AWS 帳戶會顯示下列項目:

    arn:aws:iam::123456789012:root

以下範例顯示您可以指派給 Richard 的政策,以允許他管理自己的存取金鑰。請注意,該資源是 IAM 使用者 Richard。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageRichardAccessKeys", "Effect": "Allow", "Action": [ "iam:*AccessKey*", "iam:GetUser" ], "Resource": "arn:aws:iam::*:user/division_abc/subdivision_xyz/Richard" }, { "Sid": "ListForConsole", "Effect": "Allow", "Action": "iam:ListUsers", "Resource": "*" } ] }
注意

當您使用 ARN 識別 IAM 政策中的資源時,可以包含「政策變數」。政策變數可以包含執行時間資訊的預留位置 (例如使用者名稱),做為 ARN 的一部分。如需詳細資訊,請參閱「IAM 政策元素:變數與標籤

在 ARN 中使用萬用字元和路徑

您可以在 ARN 的資源部分中使用萬用字元來指定多個使用者、使用者群組或政策。例如,若要指定在 product_1234 上工作的所有使用者,您需要使用:

arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/product_1234/*

舉例來說,您的使用者名字以字串 app_ 開頭。您可以參閱所有以下 ARN。

arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/product_1234/app_*

若要指定 AWS 帳戶中的所有使用者、使用者群組或政策,請分別在 ARN 的 user/group/policy/ 部分後使用萬用字元。

arn:aws:iam::123456789012:user/* arn:aws:iam::123456789012:group/* arn:aws:iam::123456789012:policy/*

如果您為使用者 arn:aws:iam::111122223333:user/* 指定以下 ARN,則它符合以下兩個範例。

arn:aws:iam::111122223333:user/JohnDoe arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/JaneDoe

但是,如果您為用戶 arn:aws:iam::111122223333:user/division_abc* 指定以下 ARN,則它符合第二個範例,但不符合第一個範例。

arn:aws:iam::111122223333:user/JohnDoe arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/JaneDoe

不要在 ARN 的 user/group/policy/ 部分使用萬用字元。例如,不允許下列項目:

arn:aws:iam::123456789012:u*

範例 將路徑和 ARN 用於以專案為基礎之使用者群組的範例

無法在 AWS Management Console 中建立或操控路徑。若要使用路徑,必須使用 AWS API、AWS CLI 或 Tools for Windows PowerShell 來處理資源。

在這個範例中,Marketing_Admin 使用者群組中的 Jules 在 /marketing/ 路徑中建立了專案類型使用者群組。Jules 會將來自公司不同部門的使用者指派至使用者群組。此範例說明使用者的路徑與使用者所在的使用者群組無關。

這個行銷群組有一個他們將推出的新產品,因此 Jules 在 /marketing/ path 中建立一個名為 Widget_Launch 的新的使用者群組。然後,Jules 將以下政策指派給使用者群組,讓該使用者群組存取屬於指定給此特定啟動之 example_bucket 的物件。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::example_bucket/marketing/newproductlaunch/widget/*" }, { "Effect": "Allow", "Action": "s3:ListBucket*", "Resource": "arn:aws:s3:::example_bucket", "Condition": {"StringLike": {"s3:prefix": "marketing/newproductlaunch/widget/*"}} } ] }

然後,將此 Jules 將正在進行此次啟動的使用者指派給該使用者群組。這包括來自 /marketing/ 路徑的 Patricia 和 Eli。也包括來自 /sales/ 路徑的 Chris 和 Chloe,以及 /legal/ 路徑的 Aline 和 Jim。

唯一識別碼

當 IAM 建立使用者、使用者群組、角色、政策、執行個體描述檔,或伺服器憑證時,它會指派給每個實體唯一的 ID,如下所示:

AIDAJQABLZS4A3QDU576Q

在大多數情況下,當您使用 IAM 資源時,使用的都是易記名稱和 ARN。如此即不需要知道特定資源的唯一 ID。但是,當使用易用名稱不可行時,唯一 ID 有時非常有用的。

其中一個範例會在您的 AWS 帳戶中重複使用易用名稱。在您的帳戶、使用者、使用者群組或政策的易用名稱必須是唯一的。例如,您可以建立名為 David 的 IAM 使用者。您的公司使用 Amazon S3,且有一個儲存貯體包含每位員工的資料夾。此儲存貯體具有資源類型政策 (儲存貯體政策),可允许使用者僅存取儲存貯體中使用者自己的資料夾。假設名為 David 的員工離開您的公司並刪除對應 IAM 使用者。但後來另一位名叫 David 的員工開始建立一個名為 David 的新 IAM 使用者如果儲存貯體政策指定 David IAM 使用者,則政策會允許新的 David 存取前任 David 留下的資訊。

但是,即使您建立一個重新使用先前刪除之易用名稱的新 IAM 使用者,每個 IAM 使用者都有一個唯一 ID。在此範例中,舊 IAM 使用者 David 和新 IAM 使用者 David 具有不同的唯一 ID。您可以建立資源型政策,这些政策依唯一 ID 授予存取權,而不僅僅依使用者名稱授予存取權。為免無意中將資訊存取權授予不該擁有此存取權的員工,這樣做可以降低這種情況發生的機率。

使用者 ID 可以非常有用的另一個範例是,如果您維護自己的 IAM 使用者資訊資料庫 (或其他存放區) 。唯一 ID 可為您建立的每個 IAM 使用者提供唯一識別符。當您有 IAM 使用者重複使用名稱時,就會發生這種情況,如前一個範例所示。

了解唯一 ID 前綴

IAM 使用以下前綴,指示每個唯一的 ID 適用於哪種類型的資源。

字首 資源類型
ABIA AWS STS 服務承載字符
ACCA 環境特定的登入資料

AGPA

使用者群組

AIDA

IAM 使用者

AIPA Amazon EC2 執行個體描述檔
AKIA 存取金鑰
ANPA

受管政策

ANVA

受管政策中的版本

APKA Public key
AROA 角色
ASCA 憑證

ASIA

暫時 (AWS STS) 存取金鑰 ID 使用此字首,但只有在與私密存取金鑰和工作階段字符結合使用時才是唯一的。

獲取唯一識別碼

IAM 主控台中沒有 IAM 資源的唯一 ID。若要取得唯一 ID,您可以使用下列 AWS CLI 命令或 IAM API 呼叫。

AWS CLI:

IAM API: