

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

# IAM 識別碼
<a name="reference_identifiers"></a>

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

**Topics**
+ [易用名稱和路徑](#identifiers-friendly-names)
+ [IAM ARN](#identifiers-arns)
+ [唯一識別碼](#identifiers-unique-ids)
+ [了解唯一 ID 字首](#identifiers-prefixes)
+ [獲取唯一識別碼](#identifiers-get-unique-id)

## 易用名稱和路徑
<a name="identifiers-friendly-names"></a>

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

如果您使用 IAM API 或 AWS Command Line Interface (AWS CLI) 來建立 IAM 資源，您可以新增選用路徑。您可以使用單一路徑，也可以巢狀處理多個路徑作為資料夾結構。例如，您可以使用巢狀路徑 `/division_abc/subdivision_xyz/product_1234/engineering/` 以符合您的公司的組織結構。然後，您可以建立一個政策，以允許該路徑中的所有使用者存取政策模擬器 API。若要查看此政策，請參閱 [IAM：根據使用者路徑存取政策模擬器 API](reference_policies_examples_iam_policy-sim-path.md)。如需如何指定易記名稱的資訊，請參閱[使用者 API 文件](https://docs.aws.amazon.com/IAM/latest/APIReference/API_User.html)。如需有關如何使用路徑的其他範例的詳細資訊，請參閱 [IAM ARN](#identifiers-arns)。

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

如果您的使用者和使用者群組位於相同路徑中，IAM 不會自動將使用者置於該使用者群組中。例如，您可以建立一個開發人員使用者群組並將其路徑指定為 `/division_abc/subdivision_xyz/product_1234/engineering/`。如果您建立一個名為 Bob 的使用者，並為他新增相同的路徑，則此操作不會自動將 Bob 置於 Developers 使用者群組。IAM 不會根據使用者或 IAM 群組的路徑在它們之前強制執行任何邊界。如果具有不同路徑的用戶被授予對這些資源的許可，則他們可以使用相同的資源。 AWS 帳戶中 IAM 資源的數量和大小有限。如需詳細資訊，請參閱[IAM AWS STS 和配額](reference_iam-quotas.md)。

## IAM ARN
<a name="identifiers-arns"></a>

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

```
arn:partition:service:region:account:resource
```

其中：
+ `partition` 辨識資源所在的分割區。對於標準 AWS 區域，分割區為 `aws`。如果您有其他分割區的資源，則該分割區為 `aws-partitionname`。例如，中國 (北京) 區域的資源分割區，即為 `aws-cn`。您無法在不同分割區的帳戶之間[委派存取權](access_policies-cross-account-resource-access.md#access_policies-cross-account-delegating-resource-based-policies)。
+ `service` 會識別 AWS 產品。IAM 資源一律使用 `iam`。
+ `region` 會識別資源的區域。對 IAM 資源而言，此項目一律空白。
+ `account` 指定沒有連字號的 AWS 帳戶 ID。
+ `resource` 是按名稱辨識特定資源。

您可以使用下列語法指定 IAM 和 AWS STS ARNs。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:iam::aws:contextProvider/context-provider-name
```

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

範例：

```
arn:aws:iam::123456789012:root
arn:aws:iam::123456789012:user/John
arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/Jane
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/John
arn:aws:sts::123456789012:assumed-role/Accounting-Role/Jane
arn:aws:sts::123456789012:self
arn:aws:iam::123456789012:mfa/JaneMFA
arn:aws:iam::123456789012:u2f/user/John/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
arn:aws:iam::aws:contextProvider/IdentityCenter
```

下列範例提供更多詳細資訊，協助您了解不同類型的 IAM 和資源的 ARN 格式 AWS STS 。
+ 帳戶中的 IAM 使用者：
**注意**  
每個 IAM 使用者名稱都是唯一的。對於使用者，使用者名稱不區分大小寫 (例如在登入程序期間)，但在政策中或作為 ARN 的一部分使用時，該使用者名稱會區分大小寫。

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

  ```
  arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/Jane
  ```
+ 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
  ```
+ [服務連結角色](id_roles.md#iam-term-service-linked-role)：

  ```
  arn:aws:iam::123456789012:role/aws-service-role/access-analyzer.amazonaws.com/AWSServiceRoleForAccessAnalyzer
  ```
+ [服務角色](id_roles.md#iam-term-service-role)：

  ```
  arn:aws:iam::123456789012:role/service-role/QuickSightAction
  ```
+ 受管政策：

  ```
  arn:aws:iam::123456789012:policy/ManageCredentialsPermissions
  ```
+ 可以與 Amazon EC2 執行個體建立關聯的執行個體設定檔：

  ```
  arn:aws:iam::123456789012:instance-profile/Webserver
  ```
+ 在 AWS STS IAM 中識別為「Paulo」的聯合身分使用者主體：

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

  ```
  arn:aws:sts::123456789012:assumed-role/Accounting-Role/Mary
  ```
+ 在 API 呼叫中使用呼叫者自己的工作階段做為資源時，例如在呼叫工作階段上操作的 AWS STS [SetContext](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssecuritytokenservice.html) API：

  ```
  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
  ```
+ 與 AWS IAM Identity Center 信任的身分傳播搭配使用的內容提供者 ARN，從中產生信任的內容聲明：

  ```
  arn:aws:iam::aws:contextProvider/IdentityCenter
  ```

另一個重要的 ARN 是根使用者 ARN。雖然這不是 IAM 資源，仍建議您熟悉此 ARN 的格式。它通常會用在資源型政策的 [`Principal` 元素](reference_policies_elements_principal.md)。
+  AWS 帳戶 會顯示下列項目：

  ```
  arn:aws:iam::123456789012:root
  ```

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

------
#### [ JSON ]

****  

```
{
    "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 政策元素：變數與標籤](reference_policies_variables.md) 

### 在 ARN 中使用萬用字元和路徑
<a name="reference_identifiers_arn-wildcards-paths"></a>

您可以在 ARN 的*資源*部分中使用萬用字元來指定多個使用者、IAM 群組或政策。例如，若要指定在 product\$11234 上工作的所有使用者，則使用：

```
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_*
```

若要在 中指定所有使用者、IAM 群組或政策 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/John
arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/JaneDoe
```

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

```
arn:aws:iam::111122223333:user/John
arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/Jane
```

不要在 ARN 的 `user/`、`group/` 或 `policy/` 部分使用萬用字元。例如，IAM 不允許下列項目：

```
arn:aws:iam::123456789012:u*
```

**注意**  
當您在身分型政策中指定不完整的 ARN （少於標準六個欄位） 時， AWS 會自動將萬用字元 (\$1) 新增至所有缺少的欄位，以完成 ARN。例如，指定 `arn:aws:sqs` 等同於 `arn:aws:sqs:*:*:*`，這會授予所有區域和帳戶所有 Amazon SQS 資源的存取權。不過，傳遞至 AWS STS AssumeRole、AssumeRoleWithWebIdentity 和 AssumeRoleWithSAML 請求的工作階段政策不支援不完整ARNs。在工作階段政策中使用不完整的 ARN 將導致`MalformedPolicyDocumentException`錯誤。

**Example 將路徑和 ARN 用於以專案為基礎之使用者群組的範例**  
無法在 AWS 管理主控台中建立或操控路徑。若要使用路徑，您必須使用 AWS API、 AWS CLI或 Tools for Windows PowerShell 來使用 資源。  
在這個範例中，Marketing\$1Admin 使用者群組中的 Jules 在 /marketing/ 路徑中建立了專案類型使用者群組。Jules 會將來自公司不同部門的使用者指派至使用者群組。此範例說明使用者的路徑與使用者所在的使用者群組無關。  
這個行銷群組有一個他們將推出的新產品，因此 Jules 在 /marketing/ path 中建立一個名為 Widget\$1Launch 的新的使用者群組。然後，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。

## 唯一識別碼
<a name="identifiers-unique-ids"></a>

當 IAM 建立使用者、使用者群組、角色、政策、執行個體設定檔或伺服器憑證時，它會指派給每個資源唯一的 ID。唯一 ID 類似於如下：

`AIDAJQABLZS4A3QDU576Q`

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

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

假設名為 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` 元素](reference_policies_elements_principal.md)中指定唯一的 ID。

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

下列範例展示您如何使用全域條件索引鍵 [`aws:userid`](reference_policies_condition-keys.md#condition-keys-userid) 在政策的 [`Condition` 元素](reference_policies_elements_condition.md)中指定唯一的 ID。

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

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

## 了解唯一 ID 字首
<a name="identifiers-prefixes"></a>

IAM 使用以下字首，指示每個唯一的 ID 適用於哪種類型的資源。字首可能會因建立時間而有所不同。


| 字首 | 資源類型 | 
| --- | --- | 
| ABIA | [AWS STS 服務承載字符](id_credentials_bearer.md) | 
| ACCA | 環境特定的憑證 | 
|  AGPA  | 使用者群組 | 
|  AIDA  |  IAM 使用者   | 
| AIPA | Amazon EC2 執行個體設定檔 | 
| AKIA | 存取金鑰 | 
| ANPA |  受管政策  | 
|  ANVA  |  受管政策中的版本  | 
| APKA | 公有金鑰 | 
| AROA | 角色 | 
| ASCA | 憑證 | 
|  ASIA  |  [暫時 (AWS STS) 存取金鑰 ID](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html) 使用此字首，但只有在與私密存取金鑰和工作階段權杖結合使用時才是唯一的。  | 

## 獲取唯一識別碼
<a name="identifiers-get-unique-id"></a>

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

AWS CLI:
+  [get-caller-identity](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html) 
+  [get-group](https://docs.aws.amazon.com/cli/latest/reference/iam/get-group.html) 
+  [get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html) 
+  [get-user](https://docs.aws.amazon.com/cli/latest/reference/iam/get-user.html) 
+  [get-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/get-policy.html) 
+  [get-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/get-instance-profile.html) 
+  [get-server-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/get-server-certificate.html) 

IAM API：
+  [GetCallerIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html) 
+  [GetGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetGroup.html) 
+  [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html) 
+  [GetUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html) 
+  [GetPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetPolicy.html) 
+  [GetInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetInstanceProfile.html) 
+  [GetServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServerCertificate.html) 