IAM 識別碼 - AWS 身分和存取權管理

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

IAM 識別碼

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

易用名稱和路徑

當您建立使用者、角色、使用者群組或政策,或上傳伺服器憑證時,請為其提供好記的名稱。範例包括 Bob、 TestApp 1、開發人員 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 置於 Developers 使用者群組。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。

  • 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:sts::account:self 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、或 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:sts::123456789012:self 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 arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-west-2.amazonaws.com/id/a1b2c3d4567890abcdefEXAMPLE11111 arn:aws:iam::123456789012:oidc-provider/server.example.org

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

  • 帳戶中的 IAM 使用者:

    注意

    每個 IAM 使用者名稱都是唯一的。對於使用者,使用者名稱不區分大小寫 (例如在登入程序期間),但在政策中或作為 ARN 的一部分使用時,該使用者名稱會區分大小寫。

    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
  • 可以與 Amazon 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
  • 在呼叫工作階段上運作的 API 呼叫 (例如 API) 中用作資源時,代表呼叫者自己的工作階段: AWS STS SetContext

    arn:aws:sts::123456789012:self
  • 指派給名為 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:aws:iam::123456789012:oidc-provider/server.example.org
  • OIDC 身分識別提供者,具有可反映 Amazon EKS OIDC 身分識別提供者 URL 的路徑:

    arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-west-2.amazonaws.com/id/a1b2c3d4567890abcdefEXAMPLE11111

另一個重要的 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 帳戶,請在user/group/、或policy/部分 ARN 之後分別使用萬用字元。

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/ 部分使用萬用字元。例如,IAM 不允許下列項目:

arn:aws:iam::123456789012:u*
範例 將路徑和 ARN 用於以專案為基礎之使用者群組的範例

無法在 AWS Management Console中建立或操控路徑。若要使用路徑,您必須使用 AWS API AWS CLI、或 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。唯一 ID 類似於如下:

AIDAJQABLZS4A3QDU576Q

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

一個例子在您的 AWS 帳戶. 在您的帳戶、使用者、使用者群組、角色或政策的易用名稱必須是唯一的。例如,您可以建立名為 John 的 IAM 使用者。您的公司使用 Amazon S3,且有一個儲存貯體包含每位員工的資料夾。IAM 使用者 John 是 名為 User-S3-Access 的 IAM 使用者群組成員,其具有允許使用者僅存取儲存貯體中自己的資料夾的許可。如需如何建立身分型政策的範例,該政策允許 IAM 使用者採用使用者易記的名稱在 S3 中存取自己的儲存貯體物件,請參閱 Amazon S3:允許IAM使用者以程式設計方式和主控台存取其 S3 主目錄

假設名為 John 的員工離開您的公司並刪除名為 John 的對應 IAM 使用者。但後來另一位名叫 John 的員工開始建立一個名為 John 的新 IAM 使用者。將名為 John 的 IAM 使用者新增至現有的 IAM 使用者群組 User-S3-Access。如果與使用者群組關聯的政策指定友好的 IAM 使用者名稱 John,則該政策會允許新的 John 存取前任 John 留下的資訊。

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

下列範例展示您如何在資源型政策的 Principal 元素中指定唯一的 ID。

"Principal": { "AWS": [ "arn:aws:iam::111122223333:role/role-name", "AIDACKCEVSQ6C2EXAMPLE", "AROADBQP57FF2AEXAMPLE" }

下列範例展示您如何使用全域條件索引鍵 aws:userid 在政策的 Condition 元素中指定唯一的 ID。

"Condition": { "StringLike": { "aws:userId": [ "AIDACKCEVSQ6C2EXAMPLE", "AROADBQP57FF2AEXAMPLE:role-session-name", "AROA1234567890EXAMPLE:*", "111122223333" ] } }

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

了解唯一 ID 字首

IAM 使用以下字首,指示每個唯一的 ID 適用於哪種類型的資源。前綴可能會根據創建時間而有所不同。

字首 資源類型
ABIA AWS STS 服務承載令牌
ACCA 環境特定的憑證

AGPA

使用者群組

AIDA

IAM 使用者

AIPA Amazon EC2 執行個體設定檔
AKIA 存取金鑰
ANPA

受管政策

ANVA

受管政策中的版本

APKA 公有金鑰
AROA 角色
ASCA 憑證

ASIA

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

獲取唯一識別碼

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

AWS CLI:

IAM API: