

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

# IAM 使用者
<a name="id_users"></a>

**重要**  
 IAM [最佳實務](best-practices.md)建議您要求人類使用者使用聯合身分提供者來 AWS 使用臨時憑證存取 ，而不是使用具有長期憑證的 IAM 使用者。建議您僅將 IAM 使用者用於聯合身分使用者不支援的[特定使用案例](gs-identities-iam-users.md)。

*IAM 使用者*是您在 AWS 帳戶中建立的實體。IAM 使用者表示使用 IAM 使用者與 AWS 資源互動的人類使用者或工作負載。IAM 使用者包含名稱和憑證。

具有管理員許可的 IAM 使用者與 AWS 帳戶根使用者並不相同。如需有關根使用者的詳細資訊，請參閱 [AWS 帳戶根使用者](id_root-user.md)。

## 如何 AWS 識別 IAM 使用者
<a name="id_users_create_aws-identifiers"></a>

當建立 IAM 使用者時，IAM 建立這些方法來識別該使用者：
+ IAM 使用者的「易用名稱」，即您在建立 IAM 使用者時指定的名稱，例如 `Richard` 或 `Anaya`。這些是您在 AWS 管理主控台中看到的名稱。由於 IAM 使用者名稱會顯示在 Amazon Resource Name (ARN) 中，因此不建議在 IAM 名稱中包含個人識別資訊。如需 IAM 名稱的需求和限制，請參閱 [IAM 名稱需求](reference_iam-quotas.md#reference_iam-quotas-names)。
+ IAM 使用者的 Amazon Resource Name (ARN)。當您需要唯一識別所有 的 IAM 使用者時，您可以使用 ARN AWS。例如，在 Amazon S3 儲存貯體的 IAM 政策中，您可以使用 ARN 將 IAM 使用者指定為 `Principal`。IAM 使用者的 ARN 可能如下所示：

  `arn:aws:iam::account-ID-without-hyphens:user/Richard`
+ IAM 使用者的唯一識別碼。只有在您使用 API、Tools for Windows PowerShell 或 AWS CLI 建立 IAM 使用者時，才會傳回此 ID；您在 主控台中看不到此 ID。

如需有關這些識別碼的詳細資訊，請參閱 [IAM 識別碼](reference_identifiers.md)。

## IAM 使用者和憑證
<a name="id_users_creds"></a>

您可以根據 IAM 使用者登入資料 AWS ，以不同的方式存取 ：
+ [**主控台密碼**](id_credentials_passwords.md)：IAM 使用者可以輸入的密碼，以登入互動式工作階段 (如 AWS 管理主控台)。停用 IAM 使用者的密碼 （主控台存取） 可防止他們 AWS 管理主控台 使用登入憑證登入 。它不會變更其許可，也不會阻止他們使用擔任的角色來存取主控台。已啟用主控台存取的 IAM 使用者也可以使用這些相同的登入資料，使用 `aws login` AWS CLI 命令來驗證 AWS CLI 和 SDK 存取。這些使用者將需要具有 [SignInLocalDevelopmentAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/SignInLocalDevelopmentAccess.html) 許可。如需詳細資訊，請參閱*AWS Command Line Interface 《 使用者指南*》中的 [的身分驗證和存取憑證 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-authentication.html)。
+ [**存取金鑰**](id_credentials_access-keys.md)：用來向 AWS發出程式化呼叫。但在為 IAM 使用者建立存取金鑰之前，您可以考慮其他更安全的替代方案。如需詳細資訊，請參閱 *AWS 一般參考* 中的[長期存取金鑰的考量事項和替代方案](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#alternatives-to-long-term-access-keys)。如果 IAM 使用者具有作用中的存取金鑰，他們會繼續運作並允許透過 AWS CLI、Tools for Windows PowerShell、 AWS API 或 AWS 主控台行動應用程式進行存取。
+ [**與 CodeCommit 一起使用的 SSH 金鑰**](id_credentials_ssh-keys.md)：OpenSSH 格式的 SSH 公有金鑰，可用於透過 CodeCommit 驗證身分。
+ [**伺服器憑證**](id_credentials_server-certs.md)：您可以使用 SSL/TLS 憑證來驗證某些 AWS 服務。建議您使用 AWS Certificate Manager (ACM) 來佈建、管理和部署伺服器憑證。只有當您必須在 ACM 不支援的區域中支援 HTTPS 連接時，才應使用 IAM。如需了解哪些區域支援 ACM，請參閱 *AWS 一般參考* 中的 [AWS Certificate Manager 端點和配額](https://docs.aws.amazon.com/general/latest/gr/acm.html)。

您可以選擇最適合您 IAM 使用者的憑證。當您使用 AWS 管理主控台 來建立 IAM 使用者，您必須選擇至少包含一個主控台密碼或存取金鑰。根據預設，使用 AWS CLI 或 AWS API 建立的全新 IAM 使用者沒有任何類型的登入資料。您必須根據使用案例，建立 IAM 使用者的憑證類型。

您可以使用以下選項來管理密碼、存取金鑰和多重要素驗證 (MFA) 裝置：
+ **[管理 IAM 使用者的密碼](id_credentials_passwords.md)。**建立和變更允許存取 AWS 管理主控台的密碼。設定密碼政策，以強制執行最低密碼複雜性。允許 IAM 使用者變更自己的密碼。
+ **[管理 IAM 使用者的存取金鑰](id_credentials_access-keys.md)。**建立和更新存取金鑰，以便以程式設計方式存取您帳戶中的資源。
+ **[為 IAM 使用者啟用多重要素驗證 (MFA)](id_credentials_mfa.md)。**根據[最佳實務](best-practices.md)，我們建議您要求帳戶中的所有 IAM 使用者進行多重要素驗證。使用 MFA 時，IAM 使用者需要提供兩種身分驗證形式：首先，提供憑證，那是屬於他們的使用者身分 (密碼或存取金鑰) 的一部分。此外，他們提供硬體裝置或智慧型手機或平板電腦上的應用程式所產生的臨時數字代碼。
+ **[尋找未使用的密碼和存取金鑰](id_credentials_finding-unused.md)。**擁有您帳戶或帳戶中 IAM 使用者的密碼或存取金鑰的任何人都可以存取您的 AWS 資源。安全[最佳實務](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html)是在 IAM 使用者不再需要密碼和存取金鑰時將其移除。
+ **[下載您帳戶的憑證報告](id_credentials_getting-report.md)。**您可以產生並下載「憑證報告」，其中會列出帳戶中的所有 IAM 使用者，及其各種憑證的狀態，包括密碼、存取金鑰和 MFA 裝置。對於密碼和存取金鑰、憑證報告會顯示密碼或存取金鑰最近使用的狀況。

## IAM 使用者和許可
<a name="id_users_perms"></a>

在預設情況下，新的 IAM 使用者沒有[許可](access.md)採取任何行動。他們無權執行任何 AWS 操作或存取任何 AWS 資源。擁有個別 IAM 使用者的好處是您可以為每個使用者個別指派許可。您可以指派管理許可給幾個使用者，這些使用者接著可以管理您的 AWS 資源，甚至可以建立和管理其他 IAM 使用者。不過，在大多數情況下，您想要將使用者的許可限制為只有任務所需的任務 (AWS 動作或操作） 和資源。

試想一名叫做 Diego 的使用者。當您建立 IAM 使用者 `Diego` 時，您為該使用者建立一個密碼並連接許可，讓該使用者可以啟動特定 Amazon EC2 執行個體並從 Amazon RDS 資料庫的表格中讀取 (`GET`) 資訊。有關如何建立 IAM 使用者並授予其初始憑證和許可的程序的更多資訊，請參閱 [在 中建立 IAM 使用者 AWS 帳戶](id_users_create.md)。有關如何變更現有使用者的程序的詳細資訊，請參閱 [變更 IAM 使用者的許可](id_users_change-permissions.md)。有關如何變更使用者的密碼或存取金鑰的程序的詳細資訊，請參閱 [中的使用者密碼 AWS](id_credentials_passwords.md) 和 [管理 IAM 使用者的存取金鑰](id_credentials_access-keys.md)。

您也可以新增許可界限到您的 IAM 使用者。許可界限是一項進階功能，可讓您使用 AWS 受管政策來限制身分型政策可授予 IAM 使用者或角色的最大許可。如需有關政策類型及其使用的詳細資訊，請參閱 [中的政策和許可 AWS Identity and Access Management](access_policies.md)。

## IAM 使用者和帳戶
<a name="id_users_accounts"></a>

每位 IAM 使用者只能與一個 AWS 帳戶建立關聯。由於 IAM 使用者是在您的 中定義 AWS 帳戶，因此他們不需要在 的檔案中有付款方式 AWS。您帳戶中 IAM 使用者執行的任何 AWS 活動都會向您的帳戶收費。

 AWS 帳戶中 IAM 資源的數量和大小有限。如需詳細資訊，請參閱[IAM AWS STS 和配額](reference_iam-quotas.md)。

## IAM 使用者做為服務帳戶
<a name="id_users_service_accounts"></a>

IAM 使用者是擁有關聯憑證和許可之 IAM 中的資源。IAM 使用者可以代表人員或應用程式，其會使用它的憑證來做出 AWS 請求。這通常稱為「*服務帳戶*」。如果您選擇在您的應用程式使用 IAM 使用者的長期憑證，**請勿在應用程式程式碼中直接內嵌存取金鑰**。 AWS SDKs和 AWS Command Line Interface 可讓您將存取金鑰放在已知位置，讓您不必將其保留在程式碼中。如需詳細資訊，請參閱 *AWS 一般參考* 中的[適當管理 IAM 使用者存取金鑰](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html#iam-user-access-keys)。或者，最佳實務的作法是可以[使用臨時安全憑證 (IAM 角色)，而不是長期存取金鑰](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html#use-roles)。

# IAM 使用者如何登入 AWS
<a name="id_users_sign-in"></a>

若要以 IAM 使用者 AWS 管理主控台 身分登入 ，除了使用者名稱和密碼之外，您還必須提供您的帳戶 ID 或帳戶別名。當您的管理員在主控台中建立 IAM 使用者時，他們應已將您的登入憑證傳送給您，包括您的使用者名稱，以及包含您的帳戶 ID 或帳戶別名的帳戶登入頁面 URL。

```
https://My_AWS_Account_ID.signin.aws.amazon.com/console/
```

**秘訣**  
要在網頁瀏覽器為您的帳戶登入頁面建立書籤，您應該在書籤項目手動輸入帳戶的登入 URL。請勿使用 web 瀏覽器的書籤功能，因為重新引導會模糊登入 URL。

您也可以在以下通用登入端點登入，並手動輸入您的帳戶 ID 或帳戶別名：

```
[https://console.aws.amazon.com/](https://console.aws.amazon.com/)
```

為了方便起見， AWS 登入頁面會使用瀏覽器 Cookie 來記住 IAM 使用者名稱和帳戶資訊。下次使用者前往 中的任何頁面時 AWS 管理主控台，主控台會使用 Cookie 將使用者重新導向至帳戶登入頁面。

您只能存取管理員在連接到 IAM 使用者身分的政策中指定的 AWS 資源。若要在主控台中運作，您必須具有執行主控台所執行動作的許可，例如列出和建立 AWS 資源。如需詳細資訊，請參閱[AWS 資源的存取管理](access.md)及[以身分為基礎的 IAM 政策範例](access_policies_examples.md)。

**注意**  
如果您的組織已有現有的身分系統，您可能會想建立單一登入 (SSO) 選項。SSO 可讓使用者存取 AWS 管理主控台 您帳戶的 ，而無需擁有 IAM 使用者身分。SSO 也消除了使用者登入組織網站和 AWS 單獨登入 的需求。如需詳細資訊，請參閱[啟用 AWS 主控台的自訂身分代理程式存取](id_roles_providers_enable-console-custom-url.md)。

**在 CloudTrail 中記錄登入詳細資訊**  
若您啟用 CloudTrail 將登入事件記錄到您的日誌，您需要注意 CloudTrail 如何選擇記錄事件日誌的地方。
+ 如果您的使用者直接登入到主控台，則會根據所選服務主控台是否支援區域，將它們重新引導到全域登入或區域登入端點。例如，主要主控台首頁支援區域，所以您若登入以下 URL：

  ```
  https://alias.signin.aws.amazon.com/console
  ```

  您重新引導到區域登入端點，例如 `https://us-east-2.signin.aws.amazon.com`，從而導致在使用者的區域日誌中產生區域 CloudTrail 日誌項目：

  另一方面，Amazon S3 主控台不支援區域，所以您若登入以下 URL

  ```
  https://alias.signin.aws.amazon.com/console/s3
  ```

  AWS 會將您重新導向至 的全域登入端點`https://signin.aws.amazon.com`，導致全域 CloudTrail 日誌項目。
+ 您可以手動請求特定區域登入端點，只要使用如下所示的 URL 語法，登入啟用區域的主要主控台首頁：

  ```
  https://alias.signin.aws.amazon.com/console?region=ap-southeast-1
  ```

  AWS 會將您重新導向至`ap-southeast-1`區域登入端點，並導致區域 CloudTrail 日誌事件。

如需有關 CloudTrail 和 IAM 的詳細資訊，請參閱[使用 CloudTrail 記錄 IAM 事件日誌](https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html)。

如果使用者需要以程式設計存取的方式使用您的帳戶，則您可以為每位使用者建立存取金鑰對 (存取金鑰 ID 和私密存取金鑰)。但在為使用者建立存取金鑰之前，您可以考慮其他更安全的替代方案。如需詳細資訊，請參閱 *AWS 一般參考* 中的[長期存取金鑰的考量事項和替代方案](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#alternatives-to-long-term-access-keys)。

## 其他資源
<a name="id_users_sign-in-additional-resources"></a>

下列資源可協助您進一步了解 AWS 登入。
+ [AWS Sign-In User Guide](https://docs.aws.amazon.com/signin/latest/userguide/what-is-sign-in.html) 可協助您了解根據使用者類型登入 Amazon Web Services (AWS) 的不同方式。
+ 您可以在 AWS 管理主控台中的單一 Web 瀏覽器中同時登入最多五個不同的身分。如需詳細資訊，請參閱 *AWS 管理主控台 Getting Started Guide* 中的 [Signing in to multiple accounts](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/multisession.html)。

# 啟用 MFA 的登入
<a name="console_sign-in-mfa"></a>

設定使用者的[多重要素驗證 (MFA)](id_credentials_mfa.md) 裝置必須使用自己的 MFA 裝置登入 AWS 管理主控台。使用者輸入登入憑證後， 會 AWS 檢查使用者帳戶，以查看該使用者是否需要 MFA。

**重要**  
如果您使用存取金鑰和私密金鑰登入資料透過 [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) API AWS STS 呼叫直接 AWS 管理主控台 存取，則不需要 MFA。如需詳細資訊，請參閱[使用存取金鑰和秘密金鑰憑證存取主控台](securing_access-keys.md#console-access-security-keys)。

以下各主題提供使用者在需要 MFA 時完成登入方式的資訊。

**Topics**
+ [已啟用多個 MFA 裝置](#console_sign-in-multiple-mfa)
+ [FIDO 安全性金鑰](#console_sign-in-mfa-fido)
+ [虛擬 MFA 裝置](#console_sign-in-mfa-virtual)
+ [硬體 TOTP 權杖](#console_sign-in-mfa-hardware)

## 已啟用多個 MFA 裝置
<a name="console_sign-in-multiple-mfa"></a>

如果使用者以 AWS 帳戶 根使用者或 IAM 使用者 AWS 管理主控台 身分登入 ，且該帳戶已啟用多個 MFA 裝置，他們只需要使用一個 MFA 裝置登入。使用者使用其密碼進行身分驗證以後，他們要選取希望使用哪種 MFA 裝置類型來完成身分驗證。然後，使用者會收到使用其所選裝置類型進行身分驗證的提示。

## FIDO 安全性金鑰
<a name="console_sign-in-mfa-fido"></a>

若使用者需要 MFA，則會出現第二個登入頁面。使用者需要點選 FIDO 安全性金鑰。

**注意**  
Google Chrome 瀏覽器使用者不應在要求 **Verify your identity with amazon.com** (使用 amazon.com 驗證您身分) 的彈出畫面中選擇任何可用選項。您只需要點選安全性金鑰。

與其他 MFA 裝置不同，FIDO 安全性金鑰不會失去同步。管理員可以在其遺失或損壞時停用 FIDO 安全性金鑰。如需詳細資訊，請參閱[停用 MFA 裝置 (主控台)](id_credentials_mfa_disable.md#deactive-mfa-console)。

如需支援 WebAuthn 的瀏覽器和 AWS 支援 的 FIDO 相容裝置的相關資訊，請參閱 [使用通行密鑰和安全金鑰的支援組態](id_credentials_mfa_fido_supported_configurations.md)。

## 虛擬 MFA 裝置
<a name="console_sign-in-mfa-virtual"></a>

若使用者需要 MFA，則會出現第二個登入頁面。在 **MFA code (MFA 代碼)** 方塊中，使用者必須輸入 MFA 應用程式提供的數字代碼。

如果 MFA 代碼正確，則使用者可以存取 AWS 管理主控台。如果程式碼不正確，使用者可以重試其他代碼。

虛擬 MFA 裝置可能會失去同步。如果使用者在多次嘗試 AWS 管理主控台 後無法登入 ，系統會提示使用者同步虛擬 MFA 裝置。使用者可以根據螢幕上的提示同步虛擬 MFA 裝置。如需有關如何在 中代表使用者同步裝置的資訊 AWS 帳戶，請參閱 [重新同步虛擬和硬體 MFA 裝置](id_credentials_mfa_sync.md)。

## 硬體 TOTP 權杖
<a name="console_sign-in-mfa-hardware"></a>

若使用者需要 MFA，則會出現第二個登入頁面。在 **MFA code** (MFA 代碼) 方塊中，使用者必須輸入硬體 TOTP 權杖提供的數字代碼。

如果 MFA 代碼正確，則使用者可以存取 AWS 管理主控台。如果程式碼不正確，使用者可以重試其他代碼。

硬體 TOTP 權杖可能不同步。如果使用者在多次嘗試 AWS 管理主控台 後無法登入 ，系統會提示使用者同步 MFA 字符裝置。使用者可以根據螢幕上的提示同步 MFA 權杖裝置。如需有關如何在 中代表使用者同步裝置的資訊 AWS 帳戶，請參閱 [重新同步虛擬和硬體 MFA 裝置](id_credentials_mfa_sync.md)。

# 在 中建立 IAM 使用者 AWS 帳戶
<a name="id_users_create"></a>

**重要**  
 IAM [最佳實務](best-practices.md)建議您要求人類使用者使用聯合身分提供者來 AWS 使用臨時憑證存取 ，而不是使用具有長期憑證的 IAM 使用者。建議您僅將 IAM 使用者用於聯合身分使用者不支援的[特定使用案例](gs-identities-iam-users.md)。

建立 IAM 使用者並讓該使用者執行任務的程序，包含以下步驟：

1. 在 [AWS 管理主控台、、Tools for Windows PowerShell 或使用 API 操作建立使用者 AWS CLI](getting-started-workloads.md)。 PowerShell AWS 如果您在 中建立使用者 AWS 管理主控台，則會根據您的選擇自動處理步驟 1-4。如果您透過程式設計的方式建立 IAM 使用者，則必須單獨執行每一個步驟。

1. 根據使用者需要的存取類型，建立使用者的憑證：
   + **啟用主控台存取 – *選用***：如果使用者需要存取 AWS 管理主控台，[請為使用者建立密碼](id_credentials_passwords_admin-change-user.md)。針對使用者停用主控台存取可以防止他們使用其使用者名稱和密碼登入 AWS 管理主控台 。它不會變更其許可，也不會阻止他們使用擔任的角色來存取主控台。
**提示**  
僅建立使用者需要的憑證。例如，對於只需要透過 存取的使用者 AWS 管理主控台，請勿建立存取金鑰。

1. 為使用者提供許可，以執行必要的任務。建議您將 IAM 使用者放入群組中，透過連接到這些群組的政策來管理許可。不過，也可以將許可政策直接連接到使用者來授予許可。如果使用主控台來新增使用者，可以將許可從現有使用者複製到新使用者。

   也可以新增[許可界限](access_policies_boundaries.md)，透過指定可定義使用者可擁有之最大許可的政策來限制使用者的許可。許可界限不會授予任何許可。

   如需建立自訂許可政策以用於授予許可或設定許可界限的說明，請參閱[使用客戶管理政策定義自訂 IAM 許可](access_policies_create.md)。

1. (選用) 藉由連接標籤將中繼資料新增至使用者。如需有關在 IAM 中使用標籤的詳細資訊，請參閱 [AWS Identity and Access Management 資源的標籤](id_tags.md)。

1. 提供使用者必要的登入資訊。這包括使用者提供這些憑證所在的帳戶登入頁面的密碼和主控台 URL。如需詳細資訊，請參閱 [IAM 使用者如何登入 AWS](id_users_sign-in.md)。

1. (選用) 設定使用者的[多重要素驗證 (MFA)](id_credentials_mfa.md)。MFA 要求使用者每次登入 AWS 管理主控台時提供一次性使用的代碼。

1. (選用) 為 IAM 使用者提供許可，以管理他們自己的安全憑證。(根據預設，IAM 使用者沒有管理他們自己的憑證的許可)。如需詳細資訊，請參閱[允許 IAM 使用者變更自己的密碼](id_credentials_passwords_enable-user-change.md)。
**注意**  
如果使用主控台建立使用者，並選取**使用者必須在下次登入時建立新密碼 (建議)**，則使用者擁有必要的許可。

如需有關建立使用者所需的許可資訊，請參閱 [存取 IAM 資源所需的許可](access_permissions-required.md)。

如需為特定使用案例建立 IAM 使用者的說明，請參閱下列主題：
+ [建立 IAM 使用者以進行緊急存取](getting-started-emergency-iam-user.md)
+ [為無法使用 IAM 角色的工作負載建立 IAM 使用者](getting-started-workloads.md)

# 檢視 IAM 使用者
<a name="id_users_list"></a>

您可以列出 AWS 帳戶 或特定 IAM 群組中的 IAM 使用者，並列出使用者所在的所有 IAM 群組。有關列出使用者所需的許可資訊，請參閱 [存取 IAM 資源所需的許可](access_permissions-required.md)。

## 若要列出帳戶中的所有 IAM 使用者
<a name="id_users_manage_list-users"></a>

------
#### [ Console ]

1. 按照《AWS ‭‬ 登入使用者指南》‭‬**[如何登入 AWS‭‬](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 主題中適合您使用者類型的登入程序操作。

1. 在 **IAM 主控台首頁**的左側導覽窗格中，在**搜尋 IAM** 文字方塊中輸入查詢。

1. 在導覽窗格中，選擇**使用者** 。

主控台會在您的 中顯示 IAM 使用者 AWS 帳戶。

------
#### [ AWS CLI ]

執行以下命令：
+ `[aws iam list-users](https://docs.aws.amazon.com/cli/latest/reference/iam/list-users.html)`

------
#### [ API ]

呼叫以下操作：
+ `[ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)` 

------

## 若要列出 IAM 群組中的 IAM 使用者
<a name="id_users_manage_list-users-group"></a>

------
#### [ Console ]

1. 按照《AWS ‭‬ 登入使用者指南》‭‬**[如何登入 AWS‭‬](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 主題中適合您使用者類型的登入程序操作。

1. 在 **IAM 主控台首頁**的左側導覽窗格中，在**搜尋 IAM** 文字方塊中輸入查詢。

1. 在導覽窗格中，選擇 **User groups** (使用者群組)。

1. 選擇使用者群組的名稱。

屬於該群組的 IAM 使用者會列在**使用者**索引標籤中。

------
#### [ AWS CLI ]

執行以下命令：
+ `[aws iam get-group](https://docs.aws.amazon.com/cli/latest/reference/iam/get-group.html)`

------
#### [ API ]

呼叫以下操作：
+ `[GetGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetGroup.html)` 

------

## 若要列出使用者所屬的 IAM 群組
<a name="id_users_manage_list-groups-users"></a>

------
#### [ Console ]

1. 按照《AWS ‭‬ 登入使用者指南》‭‬**[如何登入 AWS‭‬](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 主題中適合您使用者類型的登入程序操作。

1. 在 **IAM 主控台首頁**的左側導覽窗格中，在**搜尋 IAM** 文字方塊中輸入查詢。

1. 在導覽窗格中，選擇**使用者** 。

1. 在**使用者**清單中選擇 IAM 使用者名稱。

1. 選取**群組**索引標籤，以顯示包含目前使用者的群組清單。

------
#### [ AWS CLI ]

執行以下命令：
+ `[aws iam list-groups-for-user](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups-for-user.html)`

------
#### [ API ]

呼叫以下操作：
+ `[ListGroupsForUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroupsForUser.html)` 

------

## 後續步驟
<a name="id_users_list-next-steps"></a>

取得 IAM 使用者清單後，可以使用下列程序重新命名、刪除或停用 IAM 使用者。
+ [重新命名 IAM 使用者](id_users_rename.md)
+ [移除或停用 IAM 使用者](id_users_remove.md)

# 重新命名 IAM 使用者
<a name="id_users_rename"></a>

**注意**  
[最佳實務](best-practices.md)是，建議您要求人類使用者使用聯合身分提供者來 AWS 使用臨時憑證存取 。如果遵循最佳實務，則您不用管理 IAM 使用者和群組。反之，您的使用者和群組是在 外部管理 AWS ，並且能夠以*聯合身分*的形式存取 AWS 資源。聯合身分是來自您的企業使用者目錄、Web 身分提供者、 AWS Directory Service、Identity Center 目錄或任何使用透過身分來源提供的登入資料存取 AWS 服務的使用者。聯合身分使用由其身分提供者定義的群組。如果您使用的是 AWS IAM Identity Center，請參閱*AWS IAM Identity Center *[《 使用者指南》中的在 IAM Identity Center 中管理](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-sso.html)身分，以取得在 IAM Identity Center 中建立使用者和群組的相關資訊。

Amazon Web Services 提供在 AWS 帳戶中管理 IAM 使用者的多項工具。您可以列出帳戶或使用者群組中的 IAM 使用者，也可以列出使用者所屬的所有 IAM 群組。您可以重新命名或變更 IAM 使用者的路徑。如果您要改用聯合身分而非 IAM 使用者，您可以刪除 AWS 帳戶的 IAM 使用者，或停用該使用者。

如需有關新增、變更或移除 IAM 使用者之受管政策的詳細資訊，請參閱 [變更 IAM 使用者的許可](id_users_change-permissions.md)。如需管理 IAM 使用者之內嵌政策的資訊，請參閱[新增和移除 IAM 身分許可](access_policies_manage-attach-detach.md)、[編輯 IAM 政策](access_policies_manage-edit.md) 和 [刪除 IAM 政策](access_policies_manage-delete.md)。最佳實務的做法是，使用受管政策而不是內嵌政策。*AWS 受管政策*為很多常見使用案例授予許可。請記住， AWS 受管政策可能不會授予特定使用案例的最低權限許可，因為它們可供所有 AWS 客戶使用。因此，我們建議您定義使用案例的[客戶管理政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies)，以便進一步減少許可。如需詳細資訊，請參閱[AWS 受管政策](access_policies_managed-vs-inline.md#aws-managed-policies)。如需專為特定任務函數設計的 AWS 受管政策的詳細資訊，請參閱 [AWS 任務函數的 受管政策](access_policies_job-functions.md)。

若要了解驗證 IAM 政策的資訊，請參閱 [IAM 政策驗證](access_policies_policy-validator.md)。

**提示**  
[IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) 可以分析您 IAM 角色使用的服務和動作，然後產生您可以使用的精細政策。測試產生的每個政策後，您可以將政策部署到生產環境。這可確保您僅授予所需的許可給工作負載。如需政策產生的詳細資訊，請參閱 [IAM Access Analyzer 政策產生](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html)。

如需有關管理 IAM 使用者密碼的資訊，請參閱 [管理 IAM 使用者的密碼](id_credentials_passwords_admin-change-user.md)。

## 重新命名 IAM 使用者
<a name="id_users_renaming"></a>

若要變更使用者名稱或路徑，您必須使用 AWS CLI、Tools for Windows PowerShell 或 AWS API。主控台中沒有用於重新命名使用者的選項。有關重新命名使用者所需的許可資訊，請參閱 [存取 IAM 資源所需的許可](access_permissions-required.md)。

當您更改使用者名稱或路徑時，會發生以下情況：
+ 連接到使用者的所有政策繼續採用新使用名稱。
+ 使用者以新名稱保留在相同的 IAM 群組中。
+ 該使用者的唯一 ID 保持不變。如需有關唯一 ID 的詳細資訊，請參閱 [唯一識別碼](reference_identifiers.md#identifiers-unique-ids)。
+ 任何將該使用者*視為「主體」*(向該使用者授予存取權) 的資源或角色政策都會自動更新，以使用新名稱或路徑。例如，Amazon SQS 中的任何佇列類型政策或 Amazon S3 中的任何資源類型政策都會自動更新，以使用新名稱和路徑。

IAM 不會自動更新將該使用者視為*資源*以使用新使用者名稱或路徑的政策；您只能手動更新。例如，該使用者 `Richard` 連接了一個政策，而該政策讓使用者可管理其自己的安全憑證。如果管理員將 `Richard` 重新命名為 `Rich`，則管理員還需要更新該政策以將資源從：

```
arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/Richard
```

變更為此：

```
arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/Rich
```

如果管理員更改路徑，也會發生這種情況；管理員需要更新政策以反映該使用者使用新路徑。

### 重新命名使用者
<a name="id_users_manage_list-users-rename"></a>
+ AWS CLI：[aws iam update-user](https://docs.aws.amazon.com/cli/latest/reference/iam/update-user.html)
+ AWS API：[UpdateUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateUser.html) 

# 移除或停用 IAM 使用者
<a name="id_users_remove"></a>

[最佳實務](best-practices.md#remove-credentials)建議您從 中移除未使用的 IAM 使用者 AWS 帳戶。如果想要保留 IAM 使用者憑證以供日後使用，而不是從帳戶中刪除它們，可以停用使用者的存取權。如需詳細資訊，請參閱[停用 IAM 使用者](#id_users_deactivating)。

**警告**  
IAM 使用者及其存取金鑰一經刪除，將無法還原或復原。

## 先決條件 – 檢視 IAM 使用者存取權
<a name="users-manage_prerequisites"></a>

在移除使用者之前，請檢閱其最近的服務層級活動。這有助於防止從正在使用它的主體 (人員或應用程式) 中移除存取權。如需有關檢視上次存取的資訊的詳細資訊，請參閱 [AWS 使用上次存取的資訊在 中精簡許可](access_policies_last-accessed.md)。

## 移除 IAM 使用者 (主控台)
<a name="id_users_deleting_console"></a>

當您使用 AWS 管理主控台 移除 IAM 使用者時，IAM 會自動刪除下列相關資訊：
+ IAM 使用者識別符
+ 任何群組成員關係，即從該 IAM 使用者所屬的任何群組中移除該 IAM 使用者
+ 與 IAM 使用者有關的任何密碼 
+ 嵌入於 IAM 使用者的所有內嵌政策 (透過使用者群組許可套用至 IAM 使用者的政策不受影響) 
**注意**  
當您刪除使用者時，IAM 會移除任何連接至 IAM 使用者的受管政策，但不會刪除受管政策。
+ 任何相關的 MFA 裝置

### 若要移除 IAM 使用者 (主控台)
<a name="id_users_remove-section-1"></a>

------
#### [ Console ]

1. 按照《AWS ‭‬ 登入使用者指南》‭‬**[如何登入 AWS‭‬](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 主題中適合您使用者類型的登入程序操作。

1. 在 **IAM 主控台首頁**的左側導覽窗格中，在**搜尋 IAM** 文字方塊中輸入查詢。

1. 在導覽窗格中，選擇**使用者**，然後選取您要刪除之 IAM 使用者名稱旁的核取方塊。

1. 在頁面頂端，選擇 **Delete (刪除)**。
**注意**  
如果任何使用者擁有作用中的存取金鑰，則必須先停用這些存取金鑰，然後再刪除使用者。如需詳細資訊，請參閱[若要停用 IAM 使用者的存取金鑰](access-keys-admin-managed.md#admin-deactivate-access-key)。

1. 確認對話方塊中，在文字輸入欄位中輸入使用者名稱以確認刪除使用者。選擇 **刪除**。

主控台會顯示已刪除 IAM 使用者的狀態通知。

------

## 刪除 IAM 使用者 (AWS CLI)
<a name="id_users_deleting_cli"></a>

與 不同 AWS 管理主控台，當您使用 刪除 IAM 使用者時 AWS CLI，您必須手動刪除連接到 IAM 使用者的項目。此程序說明步驟。

**從 AWS 帳戶 (AWS CLI) 刪除 IAM 使用者**

1. 如果使用者有密碼，刪除該使用者的密碼。

   `[aws iam delete-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-login-profile.html)`

1. 如果使用者有存取金鑰，則將其刪除。

   `[aws iam list-access-keys](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)` (列出使用者的存取金鑰) 和 `[aws iam delete-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)`

1. 刪除使用者的簽署憑證。注意，當您刪除安全憑證時，將會永遠消失、無法還原。

   `[aws iam list-signing-certificates](https://docs.aws.amazon.com/cli/latest/reference/iam/list-signing-certificates.html)` (列出使用者的簽署的憑證) 和 `[aws iam delete-signing-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-signing-certificate.html)`

1. 如果使用者有 SSH 公有金鑰，則將其刪除。

   `[aws iam list-ssh-public-keys](https://docs.aws.amazon.com/cli/latest/reference/iam/list-ssh-public-keys.html)` (列出使用者的 SSH 公有金鑰) 和 `[aws iam delete-ssh-public-key](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-ssh-public-key.html)`

1. 刪除使用者的 Git 憑證。

   `[aws iam list-service-specific-credentials](https://docs.aws.amazon.com/cli/latest/reference/iam/list-service-specific-credentials.html)` (列出使用者的 Git 憑證) 和 `[aws iam delete-service-specific-credential](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-service-specific-credential.html)`

1. 如果使用者有多重要素驗證 (MFA) 裝置，請將其停用。

   `[aws iam list-mfa-devices](https://docs.aws.amazon.com/cli/latest/reference/iam/list-mfa-devices.html)` (列出使用者的 MFA 裝置)、`[aws iam deactivate-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html)` (停用裝置) 和 `[aws iam delete-virtual-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-virtual-mfa-device.html)` (永久刪除虛擬 MFA 裝置) 

1. 刪除使用者的內嵌政策。

   `[aws iam list-user-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-user-policies.html)` (列出使用者的內嵌政策) 和 [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-user-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-user-policy.html) (刪除政策) 

1. 分開連接到該使用者的任何受管政策。

   `[aws iam list-attached-user-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-user-policies.html)` (列出連接到使用者的受管政策) 和 [https://docs.aws.amazon.com/cli/latest/reference/iam/detach-user-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/detach-user-policy.html) (分開政策) 

1. 將該使用者從任何 IAM 群組中移除。

   `[aws iam list-groups-for-user](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups-for-user.html)` (列出使用者所屬的 IAM 群組) 和 `[aws iam remove-user-from-group](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-user-from-group.html)` 

1. 刪除使用者。

   `[aws iam delete-user](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-user.html)` 

## 停用 IAM 使用者
<a name="id_users_deactivating"></a>

當 IAM 使用者暫時離開公司時，您可能需要停用他們。您可以將他們的 IAM 使用者憑證保留在適當位置，但仍然封鎖他們的 AWS 存取權。

若要停用使用者，請建立並連接政策以拒絕使用者存取 AWS。您可以稍後恢復使用者的存取權限。

以下是您可以連接到使用者以拒絕其存取的兩個拒絕政策範例。

下列政策不包含時間限制。您必須移除政策才能恢復使用者的存取權。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [ 
      {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*"
      } 
   ]
}
```

------

下列政策包括在 2024 年 12 月 24 日晚上 11:59 (UTC) 啟動政策的條件，並於 2025 年 2 月 28 日晚上 11:59 (UTC) 結束該政策。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*",
        "Condition": {
          "DateGreaterThan": {"aws:CurrentTime": "2024-12-24T23:59:59Z"},
          "DateLessThan": {"aws:CurrentTime": "2025-02-28T23:59:59Z"}
          }
       }
   ]
}
```

------

# 控制 IAM 使用者對 的存取 AWS 管理主控台
<a name="console_controlling-access"></a>

具有 AWS 帳戶 透過 登入 許可的 IAM AWS 管理主控台 使用者可以存取您的 AWS 資源。以下清單顯示您可以透過 授予 IAM 使用者存取 AWS 帳戶 資源的方式 AWS 管理主控台。它還顯示 IAM 使用者如何透過 AWS 網站存取其他 AWS 帳戶功能。

**注意**  
使用 IAM 免費。

**的 AWS 管理主控台**  
您為需要存取 AWS 管理主控台的每個 IAM 使用者建立密碼。使用者透過啟用 IAM 的 AWS 帳戶 登入頁面存取主控台。如需有關存取登入頁面的資訊，請參閱《AWS 登入 使用者指南》** 中的 [如何登入 AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)。如需有關建立密碼的資訊，請參閱[中的使用者密碼 AWS](id_credentials_passwords.md)。  
您可以 AWS 管理主控台 移除 IAM 使用者的密碼，以防止其存取 。這可防止他們 AWS 管理主控台 使用其登入憑證登入 。它不會變更其許可，也不會阻止他們使用擔任的角色來存取主控台。如果使用者有作用中的存取金鑰，他們會繼續運作並允許透過 AWS CLI、Tools for Windows PowerShell、 AWS API 或 AWS 主控台行動應用程式進行存取。

**您的 AWS 資源，例如 Amazon EC2 執行個體、Amazon S3 儲存貯體等**  
即使 IAM 使用者有密碼，還是需要許可才能存取您的 AWS 資源。在建立 IAM 使用者時，該使用者預設是沒有許可的。若要為您的 IAM 使用者提供所需的許可，請將政策連接到他們。如果您有多個 IAM 使用者使用相同的資源執行相同的任務，則可以將這些 IAM 使用者指派給一個群組。然後，將許可指派給該群組。如需有關建立 IAM 使用者與群組的詳細資訊，請參閱 [IAM 身分](id.md)。如需使用政策來設定許可的詳細資訊，請參閱 [AWS 資源的存取管理](access.md)。

**AWS 開發論壇**  
任何人都可以讀取 [AWS 開發論壇](https://forums.aws.amazon.com/)上的文章。想要將問題或評論發佈到 AWS 開發論壇的使用者可以使用其使用者名稱這樣做。使用者第一次張貼到 AWS 開發論壇時，系統會提示使用者輸入暱稱和電子郵件地址。只有該使用者可以在 AWS 開發論壇中使用該暱稱。

**您的 AWS 帳戶 帳單和用量資訊**  
您可以授予使用者存取您的 AWS 帳戶 帳單和用量資訊。如需詳細資訊，請參閱 *AWS Billing 使用者指南*中的[控制帳單資訊的存取](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/control-access-billing.html)。

**您的 AWS 帳戶 設定檔資訊**  
使用者無法存取您的 AWS 帳戶 設定檔資訊。

**您的 AWS 帳戶 安全登入資料**  
使用者無法存取您的 AWS 帳戶 安全登入資料。

**注意**  
無論介面為何，IAM 政策控制存取權。例如，您可以提供使用者存取 AWS 管理主控台所需的密碼。該使用者 (或使用者所屬的任何群組) 適用的政策會控制使用者可以在 AWS 管理主控台中做哪些事。或者，您可以為使用者提供 AWS 存取金鑰，以便對 進行 API 呼叫 AWS。這些政策會控制使用者可以透過使用這些存取金鑰進行身分驗證的文件庫或用戶端，呼叫哪些動作。

# 變更 IAM 使用者的許可
<a name="id_users_change-permissions"></a>

您可以變更 IAM 使用者的許可， AWS 帳戶 方法是變更其群組成員資格、從現有使用者複製許可、將政策直接連接到使用者，或設定[許可界限](access_policies_boundaries.md)。許可界限控制使用者可以擁有的許可上限。許可界限是一項進階 AWS 功能。

如需有關修改使用者許可所需的許可資訊，請參閱 [存取 IAM 資源所需的許可](access_permissions-required.md)。

**Topics**
+ [檢視使用者存取](#users-modify_prerequisites)
+ [根據使用者的存取活動產生政策](#users_change_permissions-gen-policy)
+ [新增許可到使用者 (主控台)](#users_change_permissions-add-console)
+ [變更使用者的許可 (主控台)](#users_change_permissions-change-console)
+ [若要從使用者中移除許可政策 (主控台)](#users_change_permissions-remove-policy-console)
+ [若要從使用者中移除許可界限 (主控台)](#users_change_permissions-remove-boundary-console)
+ [新增和移除使用者的許可 (AWS CLI 或 AWS API)](#users_change_permissions-add-programmatic)

## 檢視使用者存取
<a name="users-modify_prerequisites"></a>

變更使用者的許可之前，您應該檢閱其最近的服務層級活動。這很重要，因為您不希望從正在使用該許可的主體 (人員或應用程式) 中移除存取。如需有關檢視上次存取的資訊的詳細資訊，請參閱 [AWS 使用上次存取的資訊在 中精簡許可](access_policies_last-accessed.md)。

## 根據使用者的存取活動產生政策
<a name="users_change_permissions-gen-policy"></a>

您有時可能會對 IAM 實體 (使用者或角色) 授予超出其要求的許可。為了協助您精簡所授予的許可，您可以根據實體的存取活動產生 IAM 政策。IAM Access Analyzer 會檢閱您的 AWS CloudTrail 日誌，並產生政策範本，其中包含實體在指定日期範圍內已使用的許可。您可以使用範本建立具有精細許可的受管政策，然後將其連接至 IAM 實體。如此一來，您只會授予使用者或角色與特定使用案例 AWS 的資源互動所需的許可。若要進一步了解，請參閱 [IAM Access Analyzer 政策產生](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html)。

## 新增許可到使用者 (主控台)
<a name="users_change_permissions-add-console"></a>

IAM 提供三種方法將許可政策新增到使用者：
+ **新增 IAM 使用者至 IAM 群組**：讓使用者成為群組的成員。群組的政策連接到使用者。
+ **從現有的 IAM 使用者複製許可**：複製所有群組成員資格、連接的受管政策、內嵌政策，以及來源使用者的任何現有許可界限。
+ **直接連接政策到 IAM 使用者**：將受管政策直接連接到使用者。為方便管理許可，請將您的政策連接到群組，然後讓 IAM 使用者成為相應群組的成員。

**重要**  
如果使用者具有許可界限，則您無法新增比許可界限允許的還要多的許可至使用者。

### 若要透過將 IAM 使用者新增到群組來新增許可
<a name="users_change_permissions-add-group-console"></a>

將 IAM 使用者新增至 IAM 群組，會立即使用為群組定義的許可來更新使用者的許可。

------
#### [ Console ]

1. 按照《AWS ‭‬ 登入使用者指南》‭‬**[如何登入 AWS‭‬](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 主題中適合您使用者類型的登入程序操作。

1. 在 **IAM 主控台首頁**的左側導覽窗格中，在**搜尋 IAM** 文字方塊中輸入查詢。

1. 在導覽窗格中，選擇**使用者** 。

1. 在**使用者**清單中選擇 IAM 使用者名稱。

1. 選取**群組**索引標籤，以顯示包含目前使用者的群組清單。

1. 選擇**將使用者新增至群組**。

1. 選取您要使用者加入的各個群組的核取方塊。如果成為群組的成員，清單會顯示每個群組的名稱和使用者所接收的政策。

1. (選用) 可以選擇**建立群組**來定義新群組。如果想要將使用者新增至連接政策與現有群組不同的群組，這很有用：

   1. 在新標籤中的 **使用者群組名稱** 中輸入新群組的名稱。
**注意**  
 AWS 帳戶中 IAM 資源的數量和大小有限。如需詳細資訊，請參閱[IAM AWS STS 和配額](reference_iam-quotas.md)。群組名稱可以是長達 128 個字母、數字以及這些字元的組合：加號 (\$1)、等號 (=)、逗號 (,)、句號 (.)、@ 符號以及連字號 (-)。名稱在帳戶中必須是唯一的。它們無法透過大小寫進行區分。例如，您無法建立兩個名為 *TESTGROUP* 和 *testgroup* 的群組。

   1. 選擇一個或多個您要連接到群組的受管政策的核取方塊。您也可以選擇 **建立政策** 來建立新的受管政策。如果您這麼做時，在新政策完成時會返回此瀏覽器標籤或視窗；選擇 **重新整理**，然後選擇新的政策，以將它連接至您的群組。如需詳細資訊，請參閱[使用客戶管理政策定義自訂 IAM 許可](access_policies_create.md)。

   1. 選擇 **建立使用者群組**。

   1. 返回原始標籤，重新整理您的群組清單。然後，選取新群組的核取方塊。

1. 選擇**將使用者新增至群組**。

主控台會顯示狀態訊息，通知您使用者已新增至指定的群組。

------

### 若要透過從其他 IAM 使用者中複製來新增許可
<a name="users_change_permissions-add-copy-console"></a>

如果選擇透過複製許可來為 IAM 使用者新增許可，IAM 會從指定的使用者中複製所有群組成員資格、連接的受管政策、內嵌政策以及任何現有的許可界限，並立即將它們套用到目前選取的使用者。

------
#### [ Console ]

1. 按照《AWS ‭‬ 登入使用者指南》‭‬**[如何登入 AWS‭‬](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 主題中適合您使用者類型的登入程序操作。

1. 在 **IAM 主控台首頁**的左側導覽窗格中，在**搜尋 IAM** 文字方塊中輸入查詢。

1. 在導覽窗格中，選擇**使用者** 。

1. 在**使用者**清單中選擇 IAM 使用者名稱。

1. 在**許可**索引標籤中，選取**新增許可**。

1. 在**新增許可**頁面中，選擇**複製許可**。清單會顯示可用的 IAM 使用者及其群組成員資格和連接的政策。

1. 選擇您要複製許可的使用者旁的選項按鈕。

1. 選擇 **下一步**，以查看要對使用者進行的變更清單。然後選擇 **新增許可**。

主控台會顯示狀態訊息，通知您已從指定的 IAM 使用者中複製許可。

------

### 若要透過直接連接政策到 IAM 使用者來新增許可
<a name="users_change_permissions-add-directly-console"></a>

可以將受管政策直接連接至 IAM 使用者。會立即套用更新的許可。

------
#### [ Console ]

1. 按照《AWS ‭‬ 登入使用者指南》‭‬**[如何登入 AWS‭‬](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 主題中適合您使用者類型的登入程序操作。

1. 在 **IAM 主控台首頁**的左側導覽窗格中，在**搜尋 IAM** 文字方塊中輸入查詢。

1. 在導覽窗格中，選擇**使用者** 。

1. 在**使用者**清單中選擇 IAM 使用者名稱。

1. 在**許可**索引標籤中，選取**新增許可**。

1. 在**新增許可**頁面中，選擇**直接連接政策**。**許可政策**清單會顯示可用政策及其政策類型和連接的實體。

1. 選取要連接的**政策名稱**旁的選項按鈕。

1. 選擇 **下一步**，以查看要對使用者進行的變更清單。然後選擇 **新增許可**。

主控台會顯示狀態訊息，通知您政策已新增至指定的 IAM 使用者。

------

### 若要設定 IAM 使用者的許可界限
<a name="users_change_permissions-set-boundary-console"></a>

許可界限是用於管理 中許可的進階功能 AWS ，用於設定 IAM 使用者可擁有的最大許可。設定許可界限會立即將 IAM 使用者許可限制在界限內，無論授予的其他許可為何。

------
#### [ Console ]

1. 按照《AWS ‭‬ 登入使用者指南》‭‬**[如何登入 AWS‭‬](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 主題中適合您使用者類型的登入程序操作。

1. 在 **IAM 主控台首頁**的左側導覽窗格中，在**搜尋 IAM** 文字方塊中輸入查詢。

1. 在導覽窗格中，選擇**使用者** 。

1. 在**使用者**清單中，選擇您要變更其許可界限的 IAM 使用者名稱。

1. 選擇 **許可** 標籤。如有必要，請開啟 **許可界限** 區段，然後選擇 **設定許可界限**。

1. 在**設定許可界限**頁面的**許可政策**下，選取要用於許可界限的政策。

1. 選擇 **設定界限**。

主控台會顯示狀態訊息，通知您已新增許可界限。

------

## 變更使用者的許可 (主控台)
<a name="users_change_permissions-change-console"></a>

IAM 可讓您以下列方式變更與使用者建立關聯的許可：
+ **編輯許可政策** – 編輯使用者的內嵌政策、使用者群組的內嵌政策，或編輯直接連接到使用者或從群組連接的受管政策。如果使用者具有許可界限，則您無法提供比當成使用者的許可界限來人用的政策所允許的還要更多的許可。
+ **變更許可界限** – 變更用作使用者的許可界限的政策。這會擴展或限制使用者可以擁有的許可上限。

### 編輯連接到使用者的許可政策
<a name="users_change_permissions-edit-policy-console"></a>

變更許可會立即更新使用者的存取權。

------
#### [ Console ]

1. 按照《AWS ‭‬ 登入使用者指南》‭‬**[如何登入 AWS‭‬](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 主題中適合您使用者類型的登入程序操作。

1. 在 **IAM 主控台首頁**的左側導覽窗格中，在**搜尋 IAM** 文字方塊中輸入查詢。

1. 在導覽窗格中，選擇**使用者** 。

1. 在**使用者**清單中，選擇您要變更其許可界限的 IAM 使用者名稱。

1. 選擇**許可**索引標籤。如有必要，請開啟**許可界限**區段。

1. 選擇您要編輯以檢視詳細資訊的政策名稱。選擇**連接的實體**索引標籤，檢視編輯政策時可能受影響的其他實體 (IAM 使用者、群組和角色）。

1. 選擇 **許可** 標籤，然後檢閱政策授予的許可。若要對許可進行變更，請選擇**編輯**。

1. 編輯該政策並解決任何[政策驗證](access_policies_policy-validator.md)建議。如需詳細資訊，請參閱[編輯 IAM 政策](access_policies_manage-edit.md)。

1. 選擇**下一步**，檢閱政策摘要，然後選擇**儲存變更**。

主控台會顯示狀態訊息，通知您已更新政策。

------

### 若要變更使用者的許可界限
<a name="users_change_permissions-change-boundary-console"></a>

變更許可界限會立即更新使用者的存取權。

------
#### [ Console ]

1. 按照《AWS ‭‬ 登入使用者指南》‭‬**[如何登入 AWS‭‬](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 主題中適合您使用者類型的登入程序操作。

1. 在 **IAM 主控台首頁**的左側導覽窗格中，在**搜尋 IAM** 文字方塊中輸入查詢。

1. 在導覽窗格中，選擇**使用者** 。

1. 在**使用者**清單中，選擇您要變更其許可界限的 IAM 使用者名稱。

1. 選擇 **Permissions (許可)** 標籤。如有必要，開啟 **許可界限** 區段，然後選擇 **變更界限**。

1. 選擇要用於許可界限的政策。

1. 選擇 **設定界限**。

主控台會顯示狀態訊息，通知您已變更許可界限。

------

## 若要從使用者中移除許可政策 (主控台)
<a name="users_change_permissions-remove-policy-console"></a>

移除許可政策會立即更新使用者的存取權。

------
#### [ Console ]

1. 按照《AWS ‭‬ 登入使用者指南》‭‬**[如何登入 AWS‭‬](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 主題中適合您使用者類型的登入程序操作。

1. 在 **IAM 主控台首頁**的左側導覽窗格中，在**搜尋 IAM** 文字方塊中輸入查詢。

1. 在導覽窗格中，選擇**使用者** 。

1. 選擇您想要移除其許可政策的使用者名稱。

1. 選擇**許可**索引標籤。

1. 如果想要透過移除現有政策來移除許可，在選擇**移除**來移除該政策之前，請檢視**連接方式**資料欄來了解使用者如何取得該政策：
   + 如果因群組成員資格而套用政策，則選擇 **移除** 會從群組移除使用者。請記住，您可能會有多個政策連接到單一群組。如果您移除群組中的使用者，使用者會失去透過群組成員資格收到的「所有」**政策的存取權。
   + 如果政策是直接連接到使用者的受管政策，則選擇 **移除** 會將政策與使用者分開。這不會影響政策本身或政策可能連接的任何其他目標實體。
   + 如果政策是內嵌政策，則選擇**移除**會從 IAM 移除政策。直接連接到使用者的內嵌政策只存在於該使用者。

如果政策是透過群組成員資格授予給使用者，主控台會顯示狀態訊息，通知您已從 IAM 群組中移除 IAM 使用者。如果政策為直接連接或內嵌，則狀態訊息會通知您已移除政策。

------

## 若要從使用者中移除許可界限 (主控台)
<a name="users_change_permissions-remove-boundary-console"></a>

移除許可界限會立即更新使用者的存取權。

------
#### [ Console ]

1. 按照《AWS ‭‬ 登入使用者指南》‭‬**[如何登入 AWS‭‬](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 主題中適合您使用者類型的登入程序操作。

1. 在 **IAM 主控台首頁**的左側導覽窗格中，在**搜尋 IAM** 文字方塊中輸入查詢。

1. 在導覽窗格中，選擇**使用者** 。

1. 在**使用者**清單中，選擇您要移除其許可界限的 IAM 使用者名稱。

1. 選擇**許可**索引標籤。如有必要，請開啟**許可界限**區段。

1.  選擇 **Change boundary (變更界限)**。若要確認您要移除許可界限，在確認對話方塊中，選擇**移除界限**。

主控台會顯示狀態訊息，通知您已移除許可界限。

------

## 新增和移除使用者的許可 (AWS CLI 或 AWS API)
<a name="users_change_permissions-add-programmatic"></a>

若要以程式設計方式新增或移除許可，您必須新增或移除群組成員資格、連接或分開受管政策，或者新增或刪除內嵌政策。如需詳細資訊，請參閱下列主題：
+ [編輯 IAM 群組中的使用者](id_groups_manage_add-remove-users.md)
+ [新增和移除 IAM 身分許可](access_policies_manage-attach-detach.md)

# 中的使用者密碼 AWS
<a name="id_credentials_passwords"></a>

您可以您帳戶中的 IAM 使用者管理密碼。IAM 使用者需要密碼才能存取 AWS 管理主控台。使用者不需要密碼，即可透過使用 Tools for Windows PowerShell AWS CLI、 AWS SDKs或 APIs 以程式設計方式存取 AWS 資源。對於這些環境，您可以選擇指派 IAM 使用者[存取金鑰](id_credentials_access-keys.md)。不過，建議您先考慮其他更安全的方案來替代存取金鑰。如需詳細資訊，請參閱[AWS 安全登入資料](security-creds.md)。

**注意**  
如果其中一個 IAM 使用者遺失或忘記密碼，您*無法*從 IAM 擷取。根據您的設定，使用者或管理員必須建立新密碼。

**Topics**
+ [設定 IAM 使用者的帳戶密碼政策](id_credentials_passwords_account-policy.md)
+ [管理 IAM 使用者的密碼](id_credentials_passwords_admin-change-user.md)
+ [允許 IAM 使用者變更自己的密碼](id_credentials_passwords_enable-user-change.md)
+ [IAM 使用者如何變更自己的密碼](id_credentials_passwords_user-change-own.md)

# 設定 IAM 使用者的帳戶密碼政策
<a name="id_credentials_passwords_account-policy"></a>

您可以在 上設定自訂密碼政策 AWS 帳戶 ，以指定 IAM 使用者密碼的複雜性要求和強制輪換期間。如果您未設定自訂密碼政策，IAM 使用者密碼必須符合預設 AWS 密碼政策。如需詳細資訊，請參閱[自訂密碼政策選項](#password-policy-details)。

**Topics**
+ [設定密碼政策的規則](#password-policy-rules)
+ [設定密碼政策所需的許可](#default-policy-permissions-required)
+ [預設密碼政策](#default-policy-details)
+ [自訂密碼政策選項](#password-policy-details)
+ [若要設定密碼政策 (主控台)](#IAMPasswordPolicy)
+ [若要變更密碼政策 (主控台)](#id_credentials_passwords_account-policy-section-1)
+ [要刪除自訂密碼政策 (主控台)](#id_credentials_passwords_account-policy-section-2)
+ [設定密碼政策 (AWS CLI)](#PasswordPolicy_CLI)
+ [設定密碼政策 (AWS API)](#PasswordPolicy_API)

## 設定密碼政策的規則
<a name="password-policy-rules"></a>

IAM 密碼政策不適用於 AWS 帳戶根使用者 密碼或 IAM 使用者存取金鑰。如果密碼過期，IAM 使用者無法登入 ， AWS 管理主控台 但可以繼續使用其存取金鑰。

當您建立或變更密碼政策時，大多數密碼政策設定將在使用者下次變更密碼時強制執行。但是，某些設定會立即強制執行。例如：
+ 當最短長度和字元類型要求變更時，將在使用者下次變更密碼時強制執行這些設定。即使現有的密碼不遵守更新的密碼政策，也不會強制使用者變更現有的密碼。
+ 當您設定密碼過期期間時，會立即強制執行過期期間。例如，假設您將密碼過期期間設定為 90 天。在這種情況下，現有密碼超過 90 天的所有 IAM 使用者的密碼會到期。這些使用者必須在下次登入時變更其密碼。

在指定次數的登入嘗試失敗之後，您無法建立「鎖定政策」來鎖定使用者帳戶。為了增強安全性，我們建議您將強式密碼政策與多重要素驗證 (MFA) 結合。如需有關 MFA 的詳細資訊，請參閱 [AWS IAM 中的多重要素驗證](id_credentials_mfa.md)。

## 設定密碼政策所需的許可
<a name="default-policy-permissions-required"></a>

您必須設定許可，以允許 IAM 實體 (使用者或角色) 檢視或編輯其帳戶密碼政策。您可以在 IAM 政策中包含下列密碼政策動作：
+ `iam:GetAccountPasswordPolicy` – 允許實體檢視其帳戶的密碼政策
+ `iam:DeleteAccountPasswordPolicy` – 允許實體刪除其帳戶的自訂密碼政策，並還原為預設密碼政策
+ `iam:UpdateAccountPasswordPolicy` – 允許實體建立或變更其帳戶的自訂密碼政策

下列政策允許完整存取權以檢視和編輯帳戶密碼政策。若要了解如何使用此範例 JSON 政策文件來建立 IAM 政策，請參閱 [正在使用 JSON 編輯器建立政策](access_policies_create-console.md#access_policies_create-json-editor)。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "FullAccessPasswordPolicy",
            "Effect": "Allow",
            "Action": [
                "iam:GetAccountPasswordPolicy",
                "iam:DeleteAccountPasswordPolicy",
                "iam:UpdateAccountPasswordPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

如需 IAM 使用者變更其自己密碼所需許可的資訊，請參閱 [允許 IAM 使用者變更自己的密碼](id_credentials_passwords_enable-user-change.md)。

## 預設密碼政策
<a name="default-policy-details"></a>

如果管理員未設定自訂密碼政策，IAM 使用者密碼必須符合預設 AWS 密碼政策。

預設密碼政策會強制執行下列條件：
+ 密碼長度最短為 8 個字元，最長為 128 個字元。
+ 至少混用 3 種下列類型字元：大寫、小寫、數字和非英數字元 (`! @ # $ % ^ & * ( ) _ + - = [ ] { } | '`)
+ 與 AWS 帳戶 您的姓名或電子郵件地址不同
+ 保證密碼不會過期

## 自訂密碼政策選項
<a name="password-policy-details"></a>

當您設定帳戶的自訂密碼政策時，您可以指定下列條件：
+ **密碼最小長度** – 您可以指定至少 6 個字元，最多可指定 128 個字元。
+ **密碼強度**：您可以選取下列任一核取方塊來定義 IAM 使用者密碼的強度：
  + 至少需要一個拉丁字母 (A–Z) 的大寫字母
  + 至少需要一個拉丁字母 (a–z) 的小寫字母
  + 至少需要有一個數字
  + 至少需要一個非英數字元的字元 `! @ # $ % ^ & * ( ) _ + - = [ ] { } | '` 
+ **Turn on password expiration** (啟用密碼過期) – 您可以選取並指定至少 1 天，且最長為 1,095 天的 IAM 使用者密碼有效期，設定後生效。例如，如果您指定 90 天的到期日，它會立即影響所有使用者。對於密碼超過 90 天的使用者，當他們在變更後登入主控台時，必須設定新密碼。密碼為 75-89 天的使用者會收到密碼過期的 AWS 管理主控台 警告。IAM 使用者可隨時變更密碼 (如果他們有許可)。當他們設定新的密碼時，該密碼的到期期間將重新開始。IAM 使用者一次只能有一個有效的密碼。
+ **密碼過期需要管理員重設** – 選取此選項，以防止 IAM 使用者在密碼過期後使用 AWS 管理主控台 更新自己的密碼。在選取此選項之前，請確認您的 AWS 帳戶 有多個具有管理許可的使用者，以重設 IAM 使用者密碼。具有 `iam:UpdateLoginProfile` 許可的管理員可以重設 IAM 使用者密碼。具有 `iam:ChangePassword` 許可和作用中存取金鑰的 IAM 使用者可以程式設計方式重設自己的 IAM 使用者主控台密碼。如果您清除此核取方塊，密碼到期的 IAM 使用者仍必須先設定新密碼，然後才能存取 AWS 管理主控台。
+ **Allow users to change their own password** (允許使用者變更自己的密碼) – 您可以允許帳戶中的所有 IAM 使用者變更自己的密碼。這可讓使用者僅針對其使用者存取 `iam:ChangePassword` 動作，並存取 `iam:GetAccountPasswordPolicy` 動作。此選項不會將許可政策連接到每個使用者。反之，IAM 會在帳戶層級套用許可到所有使用者。或者，您只允許一些使用者管理自己的密碼。若要執行這項操作，請清除此核取方塊。如需有關使用政策以限制誰可以管理密碼的詳細資訊，請參閱 [允許 IAM 使用者變更自己的密碼](id_credentials_passwords_enable-user-change.md)。
+ **防止密碼重複使用** – 您可以防止 IAM 使用者重複使用舊密碼的指定數字。您可以指定長度下限為 1，以及長度上限為 24 的舊密碼，無法重複使用。

## 若要設定密碼政策 (主控台)
<a name="IAMPasswordPolicy"></a>

您可以使用 AWS 管理主控台 來建立、變更或刪除自訂密碼政策。對密碼政策的變更適用於此政策變更後建立的新 IAM 使用者，以及變更密碼時的現有 IAM 使用者。

------
#### [ Console ]

1. 按照《AWS ‭‬ 登入使用者指南》‭‬**[如何登入 AWS‭‬](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 主題中適合您使用者類型的登入程序操作。

1. 在 **IAM 主控台首頁**的左側導覽窗格中，在**搜尋 IAM** 文字方塊中輸入查詢。

1. 在導覽窗格中，選擇**帳戶設定**。

1. 在 **Password policy** (密碼政策) 區段中，選擇 **Edit** (編輯)。

1. 選擇 **Custom** (自訂) 以使用自訂密碼政策。

1. 選取要套用至密碼政策的選項，然後選擇 **Save changes (儲存變更)**。

1. 選擇 **Set custom** (設定自訂)，確認您要設定自訂密碼政策。

主控台會顯示狀態訊息，通知您 IAM 使用者的密碼需求已更新。

------

## 若要變更密碼政策 (主控台)
<a name="id_credentials_passwords_account-policy-section-1"></a>

您可以使用 AWS 管理主控台 來建立、變更或刪除自訂密碼政策。對密碼政策的變更適用於此政策變更後建立的新 IAM 使用者，以及變更密碼時的現有 IAM 使用者。

------
#### [ Console ]

1. 按照《AWS ‭‬ 登入使用者指南》‭‬**[如何登入 AWS‭‬](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 主題中適合您使用者類型的登入程序操作。

1. 在 **IAM 主控台首頁**的左側導覽窗格中，在**搜尋 IAM** 文字方塊中輸入查詢。

1. 在導覽窗格中，選擇**帳戶設定**。

1. 在 **Password policy** (密碼政策) 區段中，選擇 **Edit** (編輯)。

1. 選取要套用至密碼政策的選項，然後選擇 **Save changes (儲存變更)**。

1. 選擇 **Set custom** (設定自訂)，確認您要設定自訂密碼政策。

主控台會顯示狀態訊息，通知您 IAM 使用者的密碼需求已更新。

------

## 要刪除自訂密碼政策 (主控台)
<a name="id_credentials_passwords_account-policy-section-2"></a>

您可以使用 AWS 管理主控台 來建立、變更或刪除自訂密碼政策。對密碼政策的變更適用於此政策變更後建立的新 IAM 使用者，以及變更密碼時的現有 IAM 使用者。

------
#### [ Console ]

1. 按照《AWS ‭‬ 登入使用者指南》‭‬**[如何登入 AWS‭‬](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 主題中適合您使用者類型的登入程序操作。

1. 在 **IAM 主控台首頁**的左側導覽窗格中，在**搜尋 IAM** 文字方塊中輸入查詢。

1. 在導覽窗格中，選擇**帳戶設定**。

1. 在 **Password policy** (密碼政策) 區段中，選擇 **Edit** (編輯)。

1. 選擇 **IAM default** (IAM 預設值) 以刪除自訂密碼政策，然後選擇 **Save changes** (儲存變更)。

1. 選擇 **Set default** (設定預設值)，確認您要設定 IAM 預設密碼政策。

主控台會顯示狀態訊息，通知您密碼政策已設定為 IAM 預設。

------

## 設定密碼政策 (AWS CLI)
<a name="PasswordPolicy_CLI"></a>

您可以使用 AWS Command Line Interface 來設定密碼政策。

**從 管理自訂帳戶密碼政策 AWS CLI**  
執行下列命令：
+ 若要建立或變更自訂密碼政策：[https://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html)
+ 若要檢視密碼政策：[https://docs.aws.amazon.com/cli/latest/reference/iam/get-account-password-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-account-password-policy.html)
+ 若要刪除自訂密碼政策：[https://docs.aws.amazon.com/cli/latest/reference/iam/delete-account-password-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-account-password-policy.html)

## 設定密碼政策 (AWS API)
<a name="PasswordPolicy_API"></a>

您可以使用 AWS API 操作來設定密碼政策。

**從 AWS API 管理自訂帳戶密碼政策**  
呼叫以下操作：
+ 若要建立或變更自訂密碼政策：[https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccountPasswordPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccountPasswordPolicy.html)
+ 若要檢視密碼政策：[https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountPasswordPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountPasswordPolicy.html)
+ 若要刪除自訂密碼政策：[https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccountPasswordPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccountPasswordPolicy.html)

# 管理 IAM 使用者的密碼
<a name="id_credentials_passwords_admin-change-user"></a>

使用 處理 AWS 資源 AWS 管理主控台 的 IAM 使用者必須擁有密碼才能登入。您可以建立、更改或刪除您的 AWS 帳戶中 IAM 使用者的密碼。

將密碼指派給使用者之後，使用者可以 AWS 管理主控台 使用帳戶的登入 URL 登入 ，如下所示：

```
https://12-digit-AWS-account-ID or alias.signin.aws.amazon.com/console
```

如需 IAM 使用者如何登入 的詳細資訊 AWS 管理主控台，請參閱*AWS 登入 《 使用者指南*》中的[如何登入 AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)。

即使使用者有自己的密碼，還是需要許可才能存取您的 AWS 資源。使用者預設沒有任何許可。為授予使用者所需的許可，您可向使用者或使用者所屬的群組分配政策。如需有關建立使用者與群組的詳細資訊，請參閱 [IAM 身分](id.md)。如需使用政策來設定許可的詳細資訊，請參閱 [變更 IAM 使用者的許可](id_users_change-permissions.md)。

您可以授予使用者變更自己密碼的許可。如需詳細資訊，請參閱[允許 IAM 使用者變更自己的密碼](id_credentials_passwords_enable-user-change.md)。如需有關使用者如何存取您帳戶登入頁面的資訊，請參閱 *《AWS 登入 使用者指南》* 中的 [如何登入 AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)。

**Topics**
+ [建立、變更或刪除 IAM 使用者密碼 (主控台)](#id_credentials_passwords_admin-change-user_console)

## 建立、變更或刪除 IAM 使用者密碼 (主控台)
<a name="id_credentials_passwords_admin-change-user_console"></a>

您可以使用 AWS 管理主控台 來管理 IAM 使用者的密碼。

您的使用者存取需求可能會隨著時間而變更。您可能需要讓打算讓 CLI 存取的使用者擁有主控台存取權、變更使用者的密碼，因為他們會收到含有其登入資料的電子郵件，或在使用者離開組織或不再需要 AWS 存取權時將其刪除。

### 若要建立 IAM 使用者密碼 (主控台)
<a name="id_credentials_passwords_admin-change-user-section-1"></a>

使用此程序建立與使用者名稱關聯的密碼，以授予使用者主控台存取權。

------
#### [ Console ]

1. 按照《AWS ‭‬ 登入使用者指南》‭‬**[如何登入 AWS‭‬](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 主題中適合您使用者類型的登入程序操作。

1. 在 **IAM 主控台首頁**的左側導覽窗格中，在**搜尋 IAM** 文字方塊中輸入查詢。

1. 在導覽窗格中，選擇 **Users** (使用者)。

1. 選擇您想要為之建立密碼的使用者名稱。

1. 選擇 **安全憑證** 標籤，然後在 **主控台登入** 下方選擇 **啟用主控台存取**。

1. 在**啟用主控台存取**對話方塊中，選取**重設密碼**，然後選擇是否要讓 IAM 產生密碼或建立自訂密碼：
   + 若要讓 IAM 產生密碼，請選擇 **Autogenerated password** (自動產生的密碼)。
   + 若要建立自訂密碼，請選擇 **Custom password (自訂密碼)** 並輸入密碼。
**注意**  
您建立的密碼必須符合帳戶的[密碼政策](id_credentials_passwords_account-policy.md)。

1. 若要要求使用者登入時建立新的密碼，請選擇**下次登入時需要變更密碼**。

1. 若要要求使用者立即使用新密碼，請選取**撤銷作用中主控台工作階段**。這會將內嵌政策連接至 IAM 使用者，如果使用者的憑證比政策指定的時間更舊，則會拒絕該使用者存取資源。

1. 選擇**重設密碼**

1. **主控台密碼**對話方塊會通知您已啟用使用者的新密碼。若要檢視密碼以便與使用者共用，請選擇**主控台密碼**對話方塊中的**顯示**。選取**下載 .csv 檔案**，以下載具有使用者憑證的檔案。
**重要**  
基於安全原因，在完成此步驟後您無法存取該密碼，但您可以隨時建立新密碼。

主控台會顯示狀態訊息，通知您已啟用主控台存取。

------

### 為 IAM 使用者變更密碼 (主控台)
<a name="id_credentials_passwords_admin-change-user-section-2"></a>

使用此程序來更新與使用者名稱關聯的密碼。

------
#### [ Console ]

1. 按照《AWS ‭‬ 登入使用者指南》‭‬**[如何登入 AWS‭‬](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 主題中適合您使用者類型的登入程序操作。

1. 在 **IAM 主控台首頁**的左側導覽窗格中，在**搜尋 IAM** 文字方塊中輸入查詢。

1. 在導覽窗格中，選擇 **Users** (使用者)。

1. 選擇您想要為之變更密碼的使用者名稱。

1. 選擇 **安全憑證** 標籤，然後在 **主控台登入** 下方選擇 **管理主控台存取**。

1. 在**管理主控台存取**對話方塊中，選取**重設密碼**，然後選擇是否要讓 IAM 產生密碼或建立自訂密碼：
   + 若要讓 IAM 產生密碼，請選擇 **Autogenerated password** (自動產生的密碼)。
   + 若要建立自訂密碼，請選擇 **Custom password (自訂密碼)** 並輸入密碼。
**注意**  
您建立的密碼必須符合帳戶的[密碼政策](id_credentials_passwords_account-policy.md)。

1. 若要要求使用者登入時建立新的密碼，請選擇**下次登入時需要變更密碼**。

1. 若要要求使用者立即使用新密碼，請選取**撤銷作用中主控台工作階段**。這會將內嵌政策連接至 IAM 使用者，如果使用者的憑證比政策指定的時間更舊，則會拒絕該使用者存取資源。

1. 選擇**重設密碼**

1. **主控台密碼**對話方塊會通知您已啟用使用者的新密碼。若要檢視密碼以便與使用者共用，請選擇**主控台密碼**對話方塊中的**顯示**。選取**下載 .csv 檔案**，以下載具有使用者憑證的檔案。
**重要**  
基於安全原因，在完成此步驟後您無法存取該密碼，但您可以隨時建立新密碼。

主控台會顯示狀態訊息，通知您已更新主控台存取。

------

### 刪除 (停用) IAM 使用者密碼 (主控台)
<a name="id_credentials_passwords_admin-change-user-section-3"></a>

使用此程序刪除與使用者名稱關聯的密碼，從而移除使用者的主控台存取權。

**重要**  
您可以 AWS 管理主控台 移除 IAM 使用者的密碼，以防止其存取 。這可防止他們 AWS 管理主控台 使用其登入憑證登入 。它不會變更其許可，也不會阻止他們使用擔任的角色來存取主控台。如果使用者有作用中的存取金鑰，他們會繼續運作並允許透過 AWS CLI、Tools for Windows PowerShell、 AWS API 或 AWS 主控台行動應用程式進行存取。

------
#### [ Console ]

1. 按照《AWS ‭‬ 登入使用者指南》‭‬**[如何登入 AWS‭‬](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) 主題中適合您使用者類型的登入程序操作。

1. 在 **IAM 主控台首頁**的左側導覽窗格中，在**搜尋 IAM** 文字方塊中輸入查詢。

1. 在導覽窗格中，選擇 **Users** (使用者)。

1. 選擇您想要為之刪除密碼的使用者名稱。

1. 選擇 **安全憑證** 標籤，然後在 **主控台登入** 下方選擇 **管理主控台存取**。

1. 若要要求使用者立即停止使用主控台，請選取**撤銷作用中主控台工作階段**。這會將內嵌政策連接至 IAM 使用者，如果使用者的憑證比政策指定的時間更舊，則會拒絕該使用者存取資源。

1. 選擇**停用存取**

主控台會顯示狀態訊息，通知您已停用主控台存取。

------

### 建立、變更或刪除 IAM 使用者密碼 (AWS CLI)
<a name="Using_ManagingPasswordsCLIAPI"></a>

您可以使用 AWS CLI API 來管理 IAM 使用者的密碼。

**建立密碼 (AWS CLI)**

1. (選用) 若要判斷使用者是否有密碼，請執行此命令：[aws iam get-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/get-login-profile.html)

1. 若要建立密碼，請執行此命令：[aws iam create-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/create-login-profile.html)

**若要變更使用者的密碼 (AWS CLI)**

1. (選用) 若要判斷使用者是否有密碼，請執行此命令：[aws iam get-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/get-login-profile.html)

1. 若要變更密碼，請執行此命令：[aws iam update-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/update-login-profile.html)

**若要刪除 (停用) 使用者的密碼 (AWS CLI)**

1. (選用) 若要判斷使用者是否有密碼，請執行此命令：[aws iam get-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/get-login-profile.html)

1. (選用) 若要判斷密碼前次使用的時間，請執行此命令：[aws iam get-user](https://docs.aws.amazon.com/cli/latest/reference/iam/get-user.html)

1. 若要刪除密碼，請執行此命令：[aws iam delete-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-login-profile.html)

**重要**  
當您刪除使用者密碼時，使用者將無法繼續登入 AWS 管理主控台。如果使用者有作用中的存取金鑰，他們會繼續運作並允許透過 AWS CLI、Tools for Windows PowerShell 或 AWS API 函數呼叫進行存取。當您使用 AWS CLI、Tools for Windows PowerShell 或 AWS API 從您的 中刪除使用者時 AWS 帳戶，您必須先使用此操作刪除密碼。如需詳細資訊，請參閱[刪除 IAM 使用者 (AWS CLI)](id_users_remove.md#id_users_deleting_cli)。

**在指定時間之前撤銷使用者的作用中主控台工作階段 (AWS CLI)**

1. 若要嵌入內嵌政策，以在指定時間之前撤銷 IAM 使用者的作用中主控台工作階段，請使用下列內嵌政策並執行以下命令：[aws iam put-user-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-user-policy.html)

   此內嵌政策會拒絕所有許可，並包含 `aws:TokenIssueTime` 條件索引鍵。它會在內嵌政策的 `Condition` 元素中指定的時間之前，撤銷使用者的作用中主控台工作階段。將 `aws:TokenIssueTime` 條件索引鍵值取代為您自己的值。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Deny",
       "Action": "*",
       "Resource": "*",
       "Condition": {
         "DateLessThan": {
           "aws:TokenIssueTime": "2014-05-07T23:47:00Z"
         }
       }
     }
   }
   ```

------

1. (選用) 若要列出嵌入在 IAM 使用者中的內嵌政策名稱，請執行以下命令：[aws iam list-user-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-user-policies.html)

1. (選用) 若要檢視嵌入在 IAM 使用者中的具名內嵌政策，請執行以下命令：[aws iam get-user-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/get-user-policy.html)

### 建立、變更或刪除 IAM 使用者密碼 (AWS API)
<a name="Using_ManagingPasswordsAPI"></a>

您可以使用 AWS API 來管理 IAM 使用者的密碼。

**建立密碼 (AWS API)**

1. (選用) 若要判斷使用者是否有密碼，請呼叫此操作：[GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html)

1. 若要建立密碼，請呼叫此操作：[CreateLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateLoginProfile.html)

**變更使用者的密碼 (AWS API)**

1. (選用) 若要判斷使用者是否有密碼，請呼叫此操作：[GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html)

1. 若要變更密碼，請呼叫此操作：[UpdateLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateLoginProfile.html)

**刪除 （停用） 使用者的密碼 (AWS API)**

1. (選用) 若要判斷使用者是否有密碼，請執行此命令：[GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html)

1. (選用) 若要判斷密碼前次使用的時間，請執行此命令：[GetUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html)

1. 若要刪除密碼，請執行此命令：[DeleteLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteLoginProfile.html)

**重要**  
當您刪除使用者密碼時，使用者將無法繼續登入 AWS 管理主控台。如果使用者有作用中的存取金鑰，他們會繼續運作並允許透過 AWS CLI、Tools for Windows PowerShell 或 AWS API 函數呼叫進行存取。當您使用 AWS CLI、Tools for Windows PowerShell 或 AWS API 從您的 中刪除使用者時 AWS 帳戶，您必須先使用此操作刪除密碼。如需詳細資訊，請參閱[刪除 IAM 使用者 (AWS CLI)](id_users_remove.md#id_users_deleting_cli)。

**在指定時間 (AWS API) 之前撤銷使用者的作用中主控台工作階段**

1. 若要內嵌內嵌政策，以在指定時間之前撤銷 IAM 使用者的作用中主控台工作階段，請使用下列內嵌政策並執行以下命令：[PutUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutUserPolicy.html)

   此內嵌政策會拒絕所有許可，並包含 `aws:TokenIssueTime` 條件索引鍵。它會在內嵌政策的 `Condition` 元素中指定的時間之前，撤銷使用者的作用中主控台工作階段。將 `aws:TokenIssueTime` 條件索引鍵值取代為您自己的值。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Deny",
       "Action": "*",
       "Resource": "*",
       "Condition": {
         "DateLessThan": {
           "aws:TokenIssueTime": "2014-05-07T23:47:00Z"
         }
       }
     }
   }
   ```

------

1. (選用) 若要列出嵌入在 IAM 使用者中的內嵌政策名稱，請執行以下命令：[ListUserPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUserPolicies.html)

1. (選用) 若要檢視嵌入在 IAM 使用者中的具名內嵌政策，請執行以下命令：[GetUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUserPolicy.html)

# 允許 IAM 使用者變更自己的密碼
<a name="id_credentials_passwords_enable-user-change"></a>

**注意**  
具有聯合身分的使用者將使用其身分提供者定義的程序來變更他們的密碼。[最佳實務](best-practices.md)是要求人類使用者使用聯合身分提供者，以 AWS 使用臨時憑證存取 。

您可以授予 IAM 使用者許可，讓他們能夠登入 AWS 管理主控台變更自己的密碼。您可以使用兩種方式的其中一種來執行此動作：
+ [允許帳戶中的所有 IAM 使用者變更自己的密碼](#proc_letalluserschangepassword)。
+ [僅允許選定的 IAM 使用者變更自己的密碼](#proc_letselectuserschangepassword)。在這種情況下您停用選項，讓所有使用者變更自己的密碼，並使用 IAM 政策僅為一些使用者授予許可。這種方法允許這些使用者變更自己的密碼以及選擇性的其他憑證，如他們自己的存取金鑰。

**重要**  
建議您[設定自訂密碼政策](id_credentials_passwords_account-policy.md)，以要求 IAM 使用者建立強式密碼。

## 允許所有 IAM 使用者變更自己的密碼
<a name="proc_letalluserschangepassword"></a>

------
#### [ Console ]

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，按一下 **Account Settings** (帳戶設定)。

1. 在 **Password policy** (密碼政策) 區段中，選擇 **Edit** (編輯)。

1. 選擇 **Custom** (自訂) 以使用自訂密碼政策。

1. 選取 **Allow users to change their own password** (允許使用者變更自己的密碼)，然後選擇 **Save changes** (儲存變更)。這允許帳戶中的所有使用者僅針對其使用者存取 `iam:ChangePassword` 動作，並可存取 `iam:GetAccountPasswordPolicy` 動作。

1. 為使用者提供下列指示，以便變更其密碼：[IAM 使用者如何變更自己的密碼](id_credentials_passwords_user-change-own.md)。

------
#### [ AWS CLI ]

執行以下命令：
+ `[aws iam update-account-password-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html)`

------
#### [ API ]

若要為 AWS 管理主控台 登入頁面 URL 建立別名，請呼叫下列操作：
+ `[UpdateAccountPasswordPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccountPasswordPolicy.html)` 

------

## 允許選定的 IAM 使用者變更自己的密碼
<a name="proc_letselectuserschangepassword"></a>

------
#### [ Console ]

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，按一下 **Account Settings** (帳戶設定)。

1. 在 **Password policy** (密碼政策) 區段中，請確認未選取 **Allow users to change their own password** (允許使用者變更自己的密碼)。如果已選取此核取方塊，所有使用者都可以變更自己的密碼。(請參閱之前的程序)。

1. 如果沒有使用者，可建立使用者，讓他們可以變更自己的密碼。如需詳細資訊，請參閱[在 中建立 IAM 使用者 AWS 帳戶](id_users_create.md)。

1. (選用) 為被允許變更密碼的使用者建立 IAM 群組，然後從之前的步驟將使用者加入到群組。如需詳細資訊，請參閱[IAM 使用者群組](id_groups.md)。

1. 指派以下政策到群組。如需詳細資訊，請參閱[管理 IAM 政策](access_policies_manage.md)。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "iam:GetAccountPasswordPolicy",
         "Resource": "*"
       },
       {
         "Effect": "Allow",
         "Action": "iam:ChangePassword",
         "Resource": "arn:aws:iam::*:user/${aws:username}"
       }
     ]
   }
   ```

------

   此政策會授予 [ChangePassword](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ChangePassword.html) 動作的存取權，讓使用者只能從主控台、、 AWS CLI Tools for Windows PowerShell 或 API 變更自己的密碼。它還授予存取權至 [GetAccountPasswordPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountPasswordPolicy.html) 動作，其可讓使用者檢視目前的密碼政策；此許可是必需的，以便使用者可在 **Change password** (變更密碼) 頁面檢視帳戶密碼政策。使用者必須能夠讀取目前的密碼政策，以確保變更的密碼符合政策的要求。

1. 為使用者提供下列指示，以便變更其密碼：[IAM 使用者如何變更自己的密碼](id_credentials_passwords_user-change-own.md)。

------

### 如需詳細資訊
<a name="HowToPwdIAMUser-moreinfo"></a>

如需有關管理憑證的詳細資訊，請參閱下列主題：
+ [允許 IAM 使用者變更自己的密碼](#id_credentials_passwords_enable-user-change) 
+ [中的使用者密碼 AWS](id_credentials_passwords.md)
+ [設定 IAM 使用者的帳戶密碼政策](id_credentials_passwords_account-policy.md)
+ [管理 IAM 政策](access_policies_manage.md)
+ [IAM 使用者如何變更自己的密碼](id_credentials_passwords_user-change-own.md)

# IAM 使用者如何變更自己的密碼
<a name="id_credentials_passwords_user-change-own"></a>

如果您已獲授予變更自己的 IAM 使用者密碼的許可，您可以使用 中的特殊頁面 AWS 管理主控台 來執行此操作。您也可以使用 AWS CLI 或 AWS API。

**Topics**
+ [必要許可](#change-own-passwords-permissions-required)
+ [IAM 使用者如何變更他們自己的密碼 (主控台)](#ManagingUserPwdSelf-Console)
+ [IAM 使用者如何變更自己的密碼 (AWS CLI 或 AWS API)](#ManagingUserPwdSelf-CLIAPI)

## 必要許可
<a name="change-own-passwords-permissions-required"></a>

若要變更您 IAM 使用者的密碼，您必須擁有以下政策的許可：[AWS：允許 IAM 使用者在「安全憑證」頁面中變更其主控台密碼](reference_policies_examples_aws_my-sec-creds-self-manage-password-only.md)。

## IAM 使用者如何變更他們自己的密碼 (主控台)
<a name="ManagingUserPwdSelf-Console"></a>

下列程序說明 IAM 使用者如何使用 AWS 管理主控台 來變更自己的密碼。

**變更您 IAM 使用者的密碼 (主控台)**

1. 使用 AWS 您的帳戶 ID 或帳戶別名、IAM 使用者名稱和密碼登入 [IAM 主控台](https://console.aws.amazon.com/iam)。
**注意**  
為了方便起見， AWS 登入頁面會使用瀏覽器 Cookie 來記住您的 IAM 使用者名稱和帳戶資訊。如果您先前以不同的使用者身分登入，請選擇在頁面底部附近的 **Sign in to a different account** (登入不同的帳戶)，返回主要登入頁面。在那裡，您可以輸入要重新導向至 AWS 您帳戶的 IAM 使用者登入頁面的帳戶 ID 或帳戶別名。

   若要取得您的 AWS 帳戶 ID，請聯絡您的管理員。

1. 在右上方的導覽列中，選擇您的使用者名稱，然後選擇 **安全憑證** 。  
![\[AWS 管理主控台安全登入資料連結\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. 在 **AWS IAM 憑證**索引標籤上，選擇**更新密碼**。

1. 針對 **Current password (目前的密碼)**，請輸入目前的密碼。輸入 **New password (新密碼)** 及 **Confirm new password (確認新密碼 )** 的新密碼。接著選擇**更新密碼**。
**注意**  
新密碼必須符合帳戶密碼政策的要求。如需詳細資訊，請參閱[設定 IAM 使用者的帳戶密碼政策](id_credentials_passwords_account-policy.md)。

## IAM 使用者如何變更自己的密碼 (AWS CLI 或 AWS API)
<a name="ManagingUserPwdSelf-CLIAPI"></a>

下列程序說明 IAM 使用者如何使用 AWS CLI 或 AWS API 來變更自己的密碼。

**若要變更您自己的 IAM 密碼，請使用下列：**
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/change-password.html](https://docs.aws.amazon.com/cli/latest/reference/iam/change-password.html)
+ AWS API： [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ChangePassword.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ChangePassword.html)

# 管理 IAM 使用者的存取金鑰
<a name="id_credentials_access-keys"></a>

**重要**  
[最佳實務](best-practices.md)的作法是使用臨時性安全憑證 (如 IAM 角色)，而不是建立長期憑證 (如存取金鑰)。在建立存取金鑰前，請檢閱[長期存取金鑰的替代方案](security-creds-programmatic-access.md#security-creds-alternatives-to-long-term-access-keys)。

存取金鑰是 IAM 使用者或 AWS 帳戶根使用者的長期憑證。您可以使用存取金鑰簽署對 AWS CLI 或 AWS API 的程式設計請求 （直接使用 AWS SDK)。如需詳細資訊，請參閱[使用 AWS 安全登入資料進行程式設計存取](security-creds-programmatic-access.md)。

存取金鑰包含兩個部分：存取金鑰 ID (例如 `AKIAIOSFODNN7EXAMPLE`) 和私密存取金鑰 (例如 `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`)。您必須一起使用存取金鑰 ID 和私密存取金鑰來驗證您的請求。



建立存取金鑰對時，將存取金鑰 ID 和私密存取金鑰儲存在安全位置。私密存取金鑰只能在您建立時擷取。如果您遺失了私密存取金鑰，則必須刪除該存取金鑰並新建一個。如需更多說明，請參閱 [更新存取金鑰](id-credentials-access-keys-update.md)。

每位使用者最多可以擁有兩個存取金鑰。

**重要**  
具有存取金鑰的 IAM 使用者可能給帳戶帶來安全風險。安全地管理存取金鑰。請勿將您的存取金鑰提供給未經授權的當事方，即便是協助[尋找您的帳戶識別符](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html)也不妥。如果這麼做，就可能會讓他人能夠永久存取您的帳戶。  
使用存取金鑰時，請注意下列事項：  
**請勿**使用帳戶的根憑證來建立存取金鑰。
**請勿**將存取金鑰或憑證資訊放置在應用程式檔案中。
**請勿**將含有存取金鑰或憑證資訊的檔案包含在專案區域中。
存放在共用登入資料檔案中的存取金鑰或 AWS 登入資料資訊會以純文字儲存。

## 監控建議
<a name="monitor-access-keys"></a>

建立存取金鑰之後：
+ Use AWS CloudTrail 可監控存取金鑰使用情況，並偵測任何未經授權的存取嘗試。如需詳細資訊，請參閱[使用 記錄 IAM 和 AWS STS API 呼叫 AWS CloudTrail](cloudtrail-integration.md)。
+ 設定 CloudWatch 警示，以便通知管理員被拒絕的存取嘗試，協助偵測惡意活動。如需更多資訊，請參閱 [Amazon CloudWatch 使用者指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)。
+ 視需要定期檢閱、更新和刪除存取金鑰。

下列主題將詳細說明與存取金鑰相關的管理任務。

**Topics**
+ [監控建議](#monitor-access-keys)
+ [透過將內嵌政策連接至 IAM 使用者來控制存取金鑰的使用](access-keys_inline-policy.md)
+ [管理存取金鑰所需的許可](access-keys_required-permissions.md)
+ [IAM 使用者如何管理自己的存取金鑰](access-key-self-managed.md)
+ [IAM 管理員如何管理 IAM 使用者存取金鑰](access-keys-admin-managed.md)
+ [更新存取金鑰](id-credentials-access-keys-update.md)
+ [保護存取金鑰的安全](securing_access-keys.md)

# 透過將內嵌政策連接至 IAM 使用者來控制存取金鑰的使用
<a name="access-keys_inline-policy"></a>

建議的最佳實務是，[工作負載使用具有 IAM 角色的臨時憑證](best-practices.md#bp-workloads-use-roles)來存取 AWS。具有存取金鑰的 IAM 使用者應獲指派最低權限存取權，並啟用[多重要素驗證 (MFA)](id_credentials_mfa.md)。如需有關擔任 IAM 角色的詳細資訊，請參閱 [擔任角色的方法](id_roles_manage-assume.md)。

不過，如果您要建立服務自動化或其他短期使用案例的概念驗證測試，並選擇使用具有存取金鑰的 IAM 使用者來執行工作負載，建議您[使用政策條件來進一步限制對其 IAM 使用者憑證的存取](best-practices.md#use-policy-conditions)。

在這種情況下，您可以建立有時限的政策，使憑證在指定的時間後過期；或者，如果您是從安全網路執行工作負載，則可以使用 IP 限制政策。

在這兩種使用案例中，您都可以使用連接至具有存取金鑰之 IAM 使用者的內嵌政策。

**為 IAM 使用者設定有時限的政策**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格中，選擇**使用者**，然後選取短期使用案例的使用者。如果您尚未建立使用者，現在可以[建立使用者](getting-started-workloads.md)。

1. 在使用者**詳細資訊**頁面上，選擇**許可**索引標籤。

1. 選擇**新增許可**，然後選取**建立內嵌政策**。

1. 在**政策編輯器**區段中，選取 **JSON** 以顯示 JSON 編輯器。

1. 在 JSON 編輯器中，輸入下列政策，將 `aws:CurrentTime` 時間戳記的值取代為所需的過期日期和時間：

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

****  

   ```
   {
   "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Deny",
         "Action": "*",
         "Resource": "*",
         "Condition": {
         "DateGreaterThan": {
         "aws:CurrentTime": "2025-03-01T00:12:00Z"
           }
         }
       }
     ]
   }
   ```

------

   此政策使用 `Deny` 效果來限制在指定日期後對所有資源執行的所有動作。`DateGreaterThan` 條件會將目前時間與您設定的時間戳記進行比較。

1. 選取 **下一步** 以繼續前往 **檢閱和建立** 頁面。在**政策**詳細資訊中，在**政策名稱**下輸入政策的名稱，然後選擇**建立政策**。

建立政策後，其會顯示在使用者的**許可**索引標籤上。當目前時間大於或等於政策中指定的時間時，使用者將無法再存取 AWS 資源。請務必通知工作負載開發人員您為這些存取金鑰指定的過期日期。

**為 IAM 使用者設定 IP 限制政策**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格中，選擇**使用者**，然後選取將從安全網路執行工作負載的使用者。如果您尚未建立使用者，現在可以[建立使用者](getting-started-workloads.md)。

1. 在使用者**詳細資訊**頁面上，選擇**許可**索引標籤。

1. 選擇**新增許可**，然後選取**建立內嵌政策**。

1. 在**政策編輯器**區段中，選取 **JSON** 以顯示 JSON 編輯器。

1. 將下列 IAM 政策複製到 JSON 編輯器，並根據您的需求更改公有 IPv4 或 IPv6 位址或範圍。您可以使用 [https://checkip.amazonaws.com](https://checkip.amazonaws.com/) 來確定目前的公有 IP 位址。可以使用斜線表示法指定個別 IP 位址或 IP 位址範圍。如需詳細資訊，請參閱[aws:SourceIp](reference_policies_condition-keys.md#condition-keys-sourceip)。
**注意**  
不得透過 VPN 或代理伺服器來混淆 IP 位址。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid":"IpRestrictionIAMPolicyForIAMUser",
         "Effect": "Deny",
         "Action": "*",
         "Resource": "*",
         "Condition": {
           "NotIpAddress": {
             "aws:SourceIp": [
               "203.0.113.0/24",
               "2001:DB8:1234:5678::/64",
               "203.0.114.1"
             ]
           },
           "BoolIfExists": {
             "aws:ViaAWSService": "false"
           }
         }
       }
     ]
   }
   ```

------

   在此政策範例中，除非請求源自於網路 (以 CIDR 表示法指定) "203.0.113.0/24"、"2001:DB8:1234:5678::/64" 或特定 IP 位址 "203.0.114.1"，否則此政策會拒絕使用套用了此政策的 IAM 使用者的存取金鑰 

1. 選取 **下一步** 以繼續前往 **檢閱和建立** 頁面。在**政策**詳細資訊中，在**政策名稱**下輸入政策的名稱，然後選擇**建立政策**。

建立政策後，其會顯示在使用者的**許可**索引標籤上。

您也可以將此政策做為服務控制政策 (SCP) 套用到 中的多個 AWS 帳戶 AWS Organizations，我們建議您使用其他條件，`aws:PrincipalArn`讓此政策陳述式僅適用於受此 SCP 規範 AWS 的帳戶內的 IAM 使用者。下列政策包含該更新：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "IpRestrictionServiceControlPolicyForIAMUsers",
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": [
            "203.0.113.0/24",
            "2001:DB8:1234:5678::/64",
            "203.0.114.1"
          ]
        },
        "BoolIfExists": {
          "aws:ViaAWSService": "false"
        },
        "ArnLike": {
          "aws:PrincipalArn": "arn:aws:iam::*:user/*"
        }
      }
    }
  ]
}
```

------

# 管理存取金鑰所需的許可
<a name="access-keys_required-permissions"></a>

**注意**  
`iam:TagUser` 是新增和編輯存取金鑰描述的選用許可。如需詳細資訊，請參閱[標記 IAM 使用者](id_tags_users.md)

為 IAM 使用者建立存取金鑰，您必須擁有以下政策的許可：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CreateOwnAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:CreateAccessKey",
                "iam:GetUser",
                "iam:ListAccessKeys",
                "iam:TagUser"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        }
    ]
}
```

------

為您自己的 IAM 使用者更新存取金鑰，您必須擁有以下政策的許可：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ManageOwnAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:CreateAccessKey",
                "iam:DeleteAccessKey",
                "iam:GetAccessKeyLastUsed",
                "iam:GetUser",
                "iam:ListAccessKeys",
                "iam:UpdateAccessKey",
                "iam:TagUser"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        }
    ]
}
```

------

# IAM 使用者如何管理自己的存取金鑰
<a name="access-key-self-managed"></a>

IAM 管理員可以透過連接[管理存取金鑰所需的許可](access-keys_required-permissions.md)中所述的政策，授予 IAM 使用者自行管理其存取金鑰的許可。

透過這些許可，IAM 使用者可以使用下列程序來建立、啟用、停用和刪除與其使用者名稱關聯的存取金鑰。

**Topics**
+ [為自己建立存取金鑰 (主控台)](#Using_CreateAccessKey)
+ [停用您的存取金鑰 (主控台)](#deactivate-access-key-seccreds)
+ [啟用您的存取金鑰 (主控台)](#activate-access-key-seccreds)
+ [刪除您的存取金鑰 (主控台)](#delete-access-key-seccreds)

## 為自己建立存取金鑰 (主控台)
<a name="Using_CreateAccessKey"></a>

如果您已獲授予適當的許可，您可以使用 為自己 AWS 管理主控台 建立存取金鑰。

**若要建立您自己的存取金鑰 (主控台)**

1. 使用 AWS 您的帳戶 ID 或帳戶別名、IAM 使用者名稱和密碼登入 [IAM 主控台](https://console.aws.amazon.com/iam)。
**注意**  
為了方便起見， AWS 登入頁面會使用瀏覽器 Cookie 來記住您的 IAM 使用者名稱和帳戶資訊。如果您先前以不同的使用者身分登入，請選擇在頁面底部附近的 **Sign in to a different account** (登入不同的帳戶)，返回主要登入頁面。從那裡，您可以輸入要重新導向至 AWS 您帳戶的 IAM 使用者登入頁面的帳戶 ID 或帳戶別名。

   若要取得您的 AWS 帳戶 ID，請聯絡您的管理員。

1. 在右上方的導覽列中，選擇您的使用者名稱，然後選擇 **安全憑證** 。  
![\[AWS 管理主控台安全登入資料連結\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. 在**存取金鑰**區段中，選擇**建立存取金鑰**。如果您已經有兩個存取金鑰，則此按鈕將被停用，您必須先刪除一個存取金鑰才能建立新的存取金鑰。

1. 在 **Access key best practices & alternatives** (存取金鑰最佳實務與替代方案) 頁面上，選擇您的使用案例以了解可協助您避免建立長期存取金鑰的其他選項。若您判定您的使用案例仍需要存取金鑰，請選取 **Other** (其他)，然後再選擇 **Next** (下一步)。

1. (選用) 為存取金鑰設定描述標籤值。這將新增標籤鍵值對到您的 IAM 使用者。這可協助您在未來辨別與更新存取金鑰。標籤索引鍵被設定為存取金鑰 id。標籤值被設定為您指定的存取金鑰描述。完成時，選擇 **Create access key** (建立存取金鑰)。

1. 在 **Retrieve access keys** (擷取存取金鑰) 頁面上，選擇 **Show** (顯示) 以顯示您的使用者的私密存取金鑰的值，或選擇 **Download .csv file** (下載 .csv 檔案)。這是您儲存您的私密存取金鑰的唯一機會。在將您的私密存取金鑰儲存到安全位置以後，選取 **Done** (完成)。

## 停用您的存取金鑰 (主控台)
<a name="deactivate-access-key-seccreds"></a>

如果您已獲授予適當的許可，您可以使用 AWS 管理主控台 來停用您的存取金鑰。

**要停用存取金鑰**

1. 使用 AWS 您的帳戶 ID 或帳戶別名、IAM 使用者名稱和密碼登入 [IAM 主控台](https://console.aws.amazon.com/iam)。
**注意**  
為了方便起見， AWS 登入頁面會使用瀏覽器 Cookie 來記住您的 IAM 使用者名稱和帳戶資訊。如果您先前以不同的使用者身分登入，請選擇在頁面底部附近的 **Sign in to a different account** (登入不同的帳戶)，返回主要登入頁面。從那裡，您可以輸入要重新導向至 AWS 您帳戶的 IAM 使用者登入頁面的帳戶 ID 或帳戶別名。

   若要取得您的 AWS 帳戶 ID，請聯絡您的管理員。

1. 在右上方的導覽列中，選擇您的使用者名稱，然後選擇 **安全憑證** 。  
![\[AWS 管理主控台安全登入資料連結\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. 在 **Access keys** (存取金鑰) 區段中，找到您想要停用的金鑰，然後選取 **Actions** (動作)，再選擇 **Deactivate** (停用)。出現確認提示時，請選取 **Deactivate** (停用)。停用的存取金鑰仍會計入兩個存取金鑰的限制。

## 啟用您的存取金鑰 (主控台)
<a name="activate-access-key-seccreds"></a>

如果您已獲授予適當的許可，您可以使用 AWS 管理主控台 來啟用您的存取金鑰。

**要啟用存取金鑰**

1. 使用 AWS 您的帳戶 ID 或帳戶別名、IAM 使用者名稱和密碼登入 [IAM 主控台](https://console.aws.amazon.com/iam)。
**注意**  
為了方便起見， AWS 登入頁面會使用瀏覽器 Cookie 來記住您的 IAM 使用者名稱和帳戶資訊。如果您先前以不同的使用者身分登入，請選擇在頁面底部附近的 **Sign in to a different account** (登入不同的帳戶)，返回主要登入頁面。從那裡，您可以輸入要重新導向至 AWS 您帳戶的 IAM 使用者登入頁面的帳戶 ID 或帳戶別名。

   若要取得您的 AWS 帳戶 ID，請聯絡您的管理員。

1. 在右上方的導覽列中，選擇您的使用者名稱，然後選擇 **安全憑證** 。  
![\[AWS 管理主控台安全登入資料連結\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. 在 **Access keys** (存取金鑰) 區段中，找到要啟用的金鑰，然後選取 **Actions** (動作)，再選擇 **Activate** (啟用)。

## 刪除您的存取金鑰 (主控台)
<a name="delete-access-key-seccreds"></a>

如果您已獲授予適當的許可，您可以使用 AWS 管理主控台 刪除您的存取金鑰。

**要刪除不再需要的存取金鑰**

1. 使用 AWS 您的帳戶 ID 或帳戶別名、IAM 使用者名稱和密碼登入 [IAM 主控台](https://console.aws.amazon.com/iam)。
**注意**  
為了方便起見， AWS 登入頁面會使用瀏覽器 Cookie 來記住您的 IAM 使用者名稱和帳戶資訊。如果您先前以不同的使用者身分登入，請選擇在頁面底部附近的 **Sign in to a different account** (登入不同的帳戶)，返回主要登入頁面。從那裡，您可以輸入要重新導向至 AWS 您帳戶的 IAM 使用者登入頁面的帳戶 ID 或帳戶別名。

   若要取得您的 AWS 帳戶 ID，請聯絡您的管理員。

1. 在右上方的導覽列中，選擇您的使用者名稱，然後選擇 **安全憑證** 。  
![\[AWS 管理主控台安全登入資料連結\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. 在 **Access keys** (存取金鑰) 區段中，找到您想要刪除的金鑰，然後選取 **Actions** (動作)，再選擇 **Delete** (刪除)。依照對話中的指示先 **Deactivate** (停用)，然後再確認刪除。建議您在永久刪除存取金鑰前驗證不再使用該存取金鑰。

# IAM 管理員如何管理 IAM 使用者存取金鑰
<a name="access-keys-admin-managed"></a>

IAM 管理員可以建立、啟用、停用和刪除與個別 IAM 使用者關聯的存取金鑰。他們也可以列出帳戶中具有存取金鑰的 IAM 使用者，並找出哪些 IAM 使用者具有特定的存取金鑰。

**Topics**
+ [為 IAM 使用者建立存取金鑰](#admin-create-access-key)
+ [若要停用 IAM 使用者的存取金鑰](#admin-deactivate-access-key)
+ [若要啟用 IAM 使用者的存取金鑰](#admin-activate-access-key)
+ [刪除 IAM 使用者的存取金鑰](#admin-delete-access-key)
+ [若要列出 IAM 使用者的存取金鑰](#admin-list-access-key)
+ [若要列出 IAM 使用者的存取金鑰](#admin-list-access-key)
+ [若要顯示您帳戶中的使用者的所有存取金鑰 ID](#admin-list-all-access-keys)
+ [若要使用存取金鑰 ID 尋找使用者](#admin-find-user-access-keys)
+ [若要尋找存取金鑰 ID 的最近使用](#admin-find-most-recent-use-access-keys)

## 為 IAM 使用者建立存取金鑰
<a name="admin-create-access-key"></a>

------
#### [ Console ]

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格中，選擇**使用者** 。

1. 選擇使用者名稱以前往使用者詳細資訊頁面。

1. 在**安全性憑證**索引標籤的**存取金鑰**區段中，選擇**建立存取金鑰**。

   如果按鈕被停用，則您必須先刪除其中一個現有的金鑰，才能建立新的金鑰。

1. 在 **Access key best practices & alternatives** (存取金鑰最佳實務與替代方案) 頁面上，檢閱最佳實務和替代方案。選擇您的使用案例以了解可協助您避免建立長期存取金鑰的其他選項。

1. 若您判定您的使用案例仍需要存取金鑰，請選取 **Other** (其他)，然後再選擇 **Next** (下一步)。

1. **(選用)** 可以在**設定描述標籤**頁面上將描述標籤新增至存取金鑰，協助追蹤存取金鑰。選取**建立存取金鑰**。

1. 在 **Retrieve access keys** (擷取存取金鑰) 頁面上，選擇 **Show** (顯示) 以顯示您的使用者的私密存取金鑰的值。

1. 如要將存取金鑰 ID 和私密存取金鑰儲存到 `.csv` 檔案並在您電腦中的安全位置保管，請選擇 **Download .csv file** (下載 .csv 檔案) 按鈕。
**重要**  
這是您檢視或下載新建立之存取金鑰的唯一機會，之後您無法再將其復原。請務必安全地保管存取金鑰。

當您為您的使用者建立存取金鑰時，在預設情況下，該金鑰對是作用中的，且您的使用者可以立即使用該金鑰對。

------
#### [ AWS CLI ]

執行以下命令：
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html)

------
#### [ API ]

呼叫以下操作：
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html) 

------

## 若要停用 IAM 使用者的存取金鑰
<a name="admin-deactivate-access-key"></a>

------
#### [ Console ]

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格中，選擇**使用者** 。

1. 選擇使用者名稱以前往使用者詳細資訊頁面。

1. 在**安全憑證**索引標籤的**存取金鑰**區段中，選擇**動作**下拉式功能表，然後選擇**停用**。

1. 在**停用**對話方塊中，選擇**停用**，確認您想要停用存取金鑰

停用存取金鑰後，API 呼叫便無法再使用它。如有需要，可以再次啟用。

------
#### [ AWS CLI ]

執行以下命令：
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html)

------
#### [ API ]

呼叫以下操作：
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html) 

------

## 若要啟用 IAM 使用者的存取金鑰
<a name="admin-activate-access-key"></a>

------
#### [ Console ]

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格中，選擇**使用者** 。

1. 選擇使用者名稱以前往使用者詳細資訊頁面。

1. 在**安全憑證**索引標籤的**存取金鑰**區段中，選擇**動作**下拉式功能表，然後選擇**啟用**。

啟用存取金鑰後，API 呼叫便可以使用。如有需要，可以再次停用。

------
#### [ AWS CLI ]

執行以下命令：
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html)

------
#### [ API ]

呼叫以下操作：
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html) 

------

## 刪除 IAM 使用者的存取金鑰
<a name="admin-delete-access-key"></a>

停用存取金鑰後，如果不再需要，請將其刪除。

------
#### [ Console ]

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格中，選擇**使用者** 。

1. 選擇使用者名稱以前往使用者詳細資訊頁面。

1. 在**安全憑證**索引標籤的**存取金鑰**區段中，選擇非活動存取金鑰的**動作**下拉式功能表，然後選擇**刪除**。

1. 在**刪除**對話方塊中，在文字輸入欄位中輸入存取金鑰 ID，然後選擇**刪除**，確認您想要刪除存取金鑰。

刪除存取金鑰後，便無法復原。

------
#### [ AWS CLI ]

執行以下命令：
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)

------
#### [ API ]

呼叫以下操作：
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html) 

------

## 若要列出 IAM 使用者的存取金鑰
<a name="admin-list-access-key"></a>

您可以檢視與 IAM 使用者相關聯的存取金鑰 ID 清單。

------
#### [ Console ]

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格中，選擇**使用者** 。

1. 選擇使用者名稱以前往使用者詳細資訊頁面。

1. 在**安全憑證**索引標籤上，**存取金鑰**區段會列出使用者的存取金鑰。

每個 IAM 使用者可以有兩個存取金鑰。

------
#### [ AWS CLI ]

執行以下命令：
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)

------
#### [ API ]

呼叫以下操作：
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html) 

------

## 若要列出 IAM 使用者的存取金鑰
<a name="admin-list-access-key"></a>

您可以檢視與 IAM 使用者相關聯的存取金鑰 ID 清單。

------
#### [ Console ]

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格中，選擇**使用者** 。

1. 選擇使用者名稱以前往使用者詳細資訊頁面。

1. 在**安全憑證**索引標籤上，**存取金鑰**區段會列出使用者的存取金鑰 ID，包括所顯示的每個金錀的狀態。
**注意**  
只有使用者的存取金鑰 ID 是可見的。只有在建立金鑰時才能擷取私密存取金鑰。

每個 IAM 使用者可以有兩個存取金鑰。

------
#### [ AWS CLI ]

執行以下命令：
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)

------
#### [ API ]

呼叫以下操作：
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html) 

------

## 若要顯示您帳戶中的使用者的所有存取金鑰 ID
<a name="admin-list-all-access-keys"></a>

您可以在 AWS 帳戶中檢視使用者的存取金鑰 ID 清單。

------
#### [ Console ]

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格中，選擇**使用者** 。

1. 選擇使用者名稱以前往使用者詳細資訊頁面。

1. 如有必要，請透過完成以下步驟將**存取金鑰 ID** 資料欄新增到使用者表格：

   1. 在資料表最右側的上方，選擇**偏好設定**圖示 (![\[Preferences icon\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/console-settings-icon.console.png))。

   1. 在**偏好設定**對話方塊的**選取可見資料欄**下，開啟**存取金鑰 ID**。

   1. 選擇 **確認** 返回使用者清單。清單更新為包含存取金鑰 ID。

1. **存取金鑰 ID** 欄會顯示每個存取金鑰的狀態，其後跟隨其 ID，例如，**`Active - AKIAIOSFODNN7EXAMPLE`** 或**`Inactive - AKIAI44QH8DHBEXAMPLE`**。

   您可以使用此資訊來檢視和複製具有一個或兩個存取金鑰的使用者的存取金鑰 ID。該欄會向沒有存取金鑰的使用者顯示 **`-`**。
**注意**  
只有在建立金鑰時才能擷取私密存取金鑰。

每個 IAM 使用者可以有兩個存取金鑰。

------

## 若要使用存取金鑰 ID 尋找使用者
<a name="admin-find-user-access-keys"></a>

您可以使用存取金鑰 ID 在 AWS 帳戶中尋找使用者。

------
#### [ Console ]

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格的搜尋方塊中輸入**存取金鑰 ID**，例如 AKIAI44QH8DHBEXAMPLE。

1. 與存取金鑰 ID 關聯的 IAM 使用者出現在導覽窗格中。選擇使用者名稱以前往使用者詳細資訊頁面。

------

## 若要尋找存取金鑰 ID 的最近使用
<a name="admin-find-most-recent-use-access-keys"></a>

存取金鑰的最近使用會顯示在 IAM 使用者頁面的使用者清單中、使用者詳細資訊頁面上，並且是憑證報告的一部分。

------
#### [ Console ]

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在使用者清單中，檢視**上次使用的存取金鑰**資料欄。

   如果未顯示該資料欄，請選擇**偏好設定**圖示 (![\[Preferences icon\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/console-settings-icon.console.png))，然後在**選取可見資料欄**下方開啟**上次使用的存取金鑰**以顯示該資料欄。

1. (選用) 在導覽窗格的**存取報告**下方，選取**憑證報告**以下載包含您帳戶中所有 IAM 使用者之存取金鑰上次使用資訊的報告。

1. (選用) 選取 IAM 使用者以檢視使用者詳細資訊。**摘要**區段包含存取金鑰 ID、其狀態，以及上次使用的時間。

------
#### [ AWS CLI ]

執行以下命令：
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html)

------
#### [ API ]

呼叫以下操作：
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html) 

------

# 更新存取金鑰
<a name="id-credentials-access-keys-update"></a>

作為安全[最佳實務](best-practices.md#update-access-keys)，我們建議在需要時更新 IAM 使用者存取金鑰，如當員工離職時。如果 IAM 使用者已獲得所需許可，他們可以更新自己的存取金鑰。

如需有關授予 IAM 使用者許可，讓他們可更新自己的存取金鑰的詳細資訊，請參閱 [AWS：允許 IAM 使用者在「安全憑證」頁面中管理其密碼、存取金鑰和 SSH 公有金鑰](reference_policies_examples_aws_my-sec-creds-self-manage-pass-accesskeys-ssh.md)。您還可以套用密碼政策到您的帳戶，以要求所有 IAM 使用者定期更新其密碼並規定必須多久更新一次。如需詳細資訊，請參閱[設定 IAM 使用者的帳戶密碼政策](id_credentials_passwords_account-policy.md)。

**注意**  
如果您遺失了私密存取金鑰，則必須刪除該存取金鑰並新建一個。私密存取金鑰只能在您建立時擷取。使用此步驟進行停用，然後使用新的憑證取代任何遺失的存取金鑰。

**Topics**
+ [更新 IAM 使用者存取金鑰 (主控台)](#rotating_access_keys_console)
+ [更新存取金鑰 (AWS CLI)](#rotating_access_keys_cli)
+ [更新存取金鑰 (AWS API)](#rotating_access_keys_api)

## 更新 IAM 使用者存取金鑰 (主控台)
<a name="rotating_access_keys_console"></a>

您可以從 AWS 管理主控台中更新存取金鑰。

**在不會中斷您的應用程式下更新 IAM 使用者的存取金鑰 (主控台)**

1. 當第一個存取金鑰仍然有效時，建立第二個存取金鑰。

   1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

   1. 在導覽窗格中，選擇 **Users** (使用者)。

   1. 選擇目標使用者的名稱，然後選擇 **Security credentials (安全憑證)** 索引標籤。

   1. 在**存取金鑰**區段中，選擇**建立存取金鑰**。在 **Access key best practices & alternatives** (存取金鑰最佳實務與替代方案) 頁面上，選取 **Other** (其他)，然後再選擇 **Next** (下一步)。

   1. (選用) 為存取金鑰設定描述標籤值，以新增標籤鍵值對到此 IAM 使用者。這可協助您在未來辨別與更新存取金鑰。標籤索引鍵被設定為存取金鑰 id。標籤值被設定為您指定的存取金鑰描述。完成時，選擇 **Create access key** (建立存取金鑰)。

   1. 在 **Retrieve access keys** (擷取存取金鑰) 頁面上，選擇 **Show** (顯示) 以顯示您的使用者的私密存取金鑰的值，或選擇 **Download .csv file** (下載 .csv 檔案)。這是您儲存您的私密存取金鑰的唯一機會。在將您的私密存取金鑰儲存到安全位置以後，選取 **Done** (完成)。

      當您為您的使用者建立存取金鑰時，在預設情況下，該金鑰對是作用中的，且您的使用者可以立即使用該金鑰對。此時，使用者有兩個作用中的存取金鑰。

1. 更新所有應用程式和工具以使用新的存取金鑰。

1. <a name="id_credentials_access-keys-key-still-in-use"></a>透過查看 **Last used** (上次使用) 資訊中最舊的存取金鑰，判斷第一個存取金鑰是否仍在使用中。其中一個方法是等待幾天，然後在繼續之前檢查舊的存取金鑰以供使用。

1. 即使 **Last used** (上次使用) 資訊指示從未使用舊金鑰，我們建議您不要立即刪除第一個存取金鑰。反之，選擇 **Actions** (動作)，然後選擇 **Deactivate** (停用) 來停用第一個存取金鑰。

1. 僅使用新的存取金鑰來確認您的應用程式正在工作。仍然使用原始存取金鑰的任何應用程式和工具此時都會停止運作，因為他們不再能夠存取 AWS 資源。如果您找到此類應用程式或工具，則可以重新啟用第一個存取金鑰。然後，返回 [Step 3](#id_credentials_access-keys-key-still-in-use) 並更新此應用程式以使用新的金鑰。

1. 等待一段時間後確保所有應用程式和工具都已更新，您可以刪除第一個存取金鑰：

   1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

   1. 在導覽窗格中，選擇 **Users** (使用者)。

   1. 選擇目標使用者的名稱，然後選擇 **Security credentials (安全憑證)** 索引標籤。

   1. 在 **Access keys** (存取金鑰) 區段中，找到您想要刪除的存取金鑰，然後選取 **Actions** (動作)，再選擇 **Delete** (刪除)。依照對話中的指示先 **Deactivate** (停用)，然後再確認刪除。

**判斷需要更新或刪除哪些存取金鑰 （主控台）**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇 **Users** (使用者)。

1. 如有必要，請透過完成以下步驟將 **Access key age** (存取金鑰使用期限) 欄新增到使用者表格：

   1. 在最右側的表格上方，選擇設定圖示 (![\[Settings icon\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/console-settings-icon.console.png))。

   1. 在 **Manage columns** (管理欄) 中，選取 **Access key age** (存取金鑰使用期限)。

   1. 選擇 **Close (關閉)** 返回使用者清單。

1. **Access key age** (存取金鑰使用期限) 列顯示自建立最早的作用中存取金鑰以來的天數。您可以使用此資訊來尋找可能需要更新或刪除存取金鑰的使用者。對於沒有存取金鑰的使用者，該欄會顯示 **None** (無)。

## 更新存取金鑰 (AWS CLI)
<a name="rotating_access_keys_cli"></a>

您可以從 AWS Command Line Interface中更新存取金鑰。

**在不會中斷您的應用程式下更新存取金鑰 (AWS CLI)**

1. 當第一個存取金鑰仍然有效時，建立第二個存取金鑰，該索引鍵在預設情況下處於作用中。執行以下命令：
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html)

     此時，使用者有兩個作用中的存取金鑰。

1. <a name="step-update-apps"></a>更新所有應用程式和工具以使用新的存取金鑰。

1. <a name="step-determine-use"></a>使用此命令判斷第一個存取金鑰是否仍在使用中：
   +  [https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html)

   其中一個方法是等待幾天，然後在繼續之前檢查舊的存取金鑰以供使用。

1. 即使步驟 [Step 3](#step-determine-use) 表示不使用舊金鑰，我們也建議您不要立即刪除第一個存取金鑰。反之，使用此命令將第一個存取金鑰的狀態變更為 `Inactive`：
   +  [https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html)

1. 僅使用新的存取金鑰來確認您的應用程式正在工作。仍然使用原始存取金鑰的任何應用程式和工具此時都會停止運作，因為他們不再能夠存取 AWS 資源。如果找到此類應用程式或工具，則可以將其狀態切換回 `Active` 以重新啟用第一個存取金鑰。然後，返回步驟 [Step 2](#step-update-apps) 並更新此應用程式以使用新的金鑰。

1. 等待一段時間後確保所有應用程式和工具都已更新，可以使用此命令刪除第一個存取金鑰：
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)

## 更新存取金鑰 (AWS API)
<a name="rotating_access_keys_api"></a>

您可以使用 AWS API 更新存取金鑰。

**在不中斷應用程式 (AWS API) 的情況下更新存取金鑰**

1. 當第一個存取金鑰仍然有效時，建立第二個存取金鑰，該索引鍵在預設情況下處於作用中。呼叫以下操作：
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html)

     此時，使用者有兩個作用中的存取金鑰。

1. <a name="step-update-apps-2"></a>更新所有應用程式和工具以使用新的存取金鑰。

1. <a name="step-determine-use-2"></a>透過呼叫此操作判斷第一個存取金鑰是否仍在使用中：
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html)

   其中一個方法是等待幾天，然後在繼續之前檢查舊的存取金鑰以供使用。

1. 即使步驟 [Step 3](#step-determine-use-2) 表示不使用舊金鑰，我們也建議您不要立即刪除第一個存取金鑰。反之，呼叫此操作將第一個存取金鑰的狀態變更為 `Inactive`：
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html)

1. 僅使用新的存取金鑰來確認您的應用程式正在工作。仍然使用原始存取金鑰的任何應用程式和工具此時都會停止運作，因為他們不再能夠存取 AWS 資源。如果找到此類應用程式或工具，則可以將其狀態切換回 `Active` 以重新啟用第一個存取金鑰。然後，返回步驟 [Step 2](#step-update-apps-2) 並更新此應用程式以使用新的金鑰。

1. 等待一段時間後確保所有應用程式和工具都已更新，您可以刪除呼叫此操作的第一個存取金鑰：
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html)

# 保護存取金鑰的安全
<a name="securing_access-keys"></a>

擁有您存取金鑰的任何人都擁有與您執行之 AWS 資源相同的存取層級。因此， AWS 會竭盡全力保護您的存取金鑰，而且為了符合我們的[共同責任模型](https://aws.amazon.com/compliance/shared-responsibility-model/)，您也應該這麼做。

展開下列各節，以取得協助您保護存取金鑰的指引。

**注意**  
您組織的安全要求和政策，可能會與本主題中所述的狀況不同。這裡提供的建議旨在做為一般指導方針。

## 移除 （或不產生） AWS 帳戶根使用者 存取金鑰
<a name="root-password"></a>

**保護帳戶其中一個最佳方法是，不要有 AWS 帳戶根使用者的存取金鑰**。除非您必須要有根使用者存取金鑰 (少數情況下)，否則最好不要產生存取金鑰。反之，請在 中 AWS IAM Identity Center 為每日管理任務建立管理使用者。如需如何在 IAM Identity Center 中建立管理使用者的相關資訊，請參閱《*IAM Identity Center 使用者指南*》中的[入門](https://docs.aws.amazon.com//singlesignon/latest/userguide/getting-started.html)。

如果您已經有帳戶的根使用者存取金鑰，建議您執行以下步驟：找出應用程式中目前使用金鑰 (如果有) 的地方，以 IAM 使用者存取金鑰取代根使用者存取金鑰。然後停用並移除根使用者存取金鑰。如需有關如何更新存取金鑰的詳細資訊，請參閱 [更新存取金鑰](id-credentials-access-keys-update.md)。



## 使用臨時安全憑證 (IAM 角色)，而不是長期存取金鑰
<a name="use-roles"></a>

在許多情況下，您不必像 IAM 使用者一樣需要永遠不會過期的長期存取金鑰。反之，您可以建立 IAM 角色並產生暫時安全憑證。臨時安全登入資料包含存取金鑰 ID 和私密存取金鑰，但其中也包含指出登入資料何時到期的安全符記。

例如與 IAM 使用者和根使用者相關聯的長期存取金鑰，會一直保持有效，直到您手動撤銷為止。不過，透過 IAM 角色和其他 功能取得的臨時安全登入資料會在短時間內 AWS Security Token Service 過期。使用臨時安全登入資料，可協助降低風險，以防登入資料意外洩露。

請在以下案例中使用 IAM 角色和臨時安全憑證：
+ **您有應用程式或 AWS CLI 指令碼在 Amazon EC2 執行個體上執行。**請勿直接在應用程式中使用存取金鑰。請勿將存取金鑰傳遞至應用程式、將其嵌入應用程式中，或讓應用程式從任何來源讀取存取金鑰。反之，請定義具有應用程式適當權許可的 IAM 角色，然後使用 [EC2 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)啟動 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。這樣做會將 IAM 角色與 Amazon EC2 執行個體相關聯。這種做法也可讓應用程式取得臨時安全憑證，以便用來對 AWS進行程式化呼叫。 AWS SDKs 和 AWS Command Line Interface (AWS CLI) 可以自動從角色取得臨時登入資料。
+ **您需要授予跨帳戶存取權。**使用 IAM 角色培養帳戶之間的信任，然後對一個帳戶中的使用者授予有限的許可，以存取信任的帳戶。如需詳細資訊，請參閱[IAM 教學課程：使用 IAM 角色在 AWS 帳戶之間委派存取權](tutorial_cross-account-with-roles.md)。
+ **您有一個行動應用程式。**請勿使用應用程式內嵌存取金鑰，甚至是內嵌於加密儲存中。反之，請使用 [Amazon Cognito](https://aws.amazon.com/cognito/) 來管理應用程式中的使用者身分。此服務可讓您使用 Login with Amazon、Facebook、Google 或任何與身分提供者相容的 OpenID Connect (OIDC)，驗證使用者的身分。然後，您可以使用 Amazon Cognito 憑證供應商，管理應用程式用來向 AWS提出請求的憑證。
+ **您想要與 聯合， AWS 且您的組織支援 SAML 2.0。**如果您處理的組織是具有支援 SAML 2.0 的身分識別提供者的組織，請將提供者設定為使用 SAML。您可以使用 SAML 與 交換身分驗證資訊， AWS 並取回一組臨時安全登入資料。如需詳細資訊，請參閱[SAML 2.0 聯合身分](id_roles_providers_saml.md)。
+ **您想要與 聯合， AWS 而且您的組織具有內部部署身分存放區。**如果使用者可以在您的組織內部進行身分驗證，您可以撰寫應用程式，向他們發出臨時安全登入資料以存取 AWS 資源。如需詳細資訊，請參閱[啟用 AWS 主控台的自訂身分代理程式存取](id_roles_providers_enable-console-custom-url.md)。
+ **在 IAM 政策中使用條件，僅允許從預期網路進行存取。**您可以透過實作[具有條件的 IAM 政策](reference_policies_elements_condition_operators.md)來限制存取金鑰的使用位置和方式，這些條件指定並僅允許預期網路，例如公有 IP 位址或虛擬私有雲端 (VPC)。如此一來，便能確保存取金鑰僅從預期且可接受的網路使用。

**注意**  
您是否將 Amazon EC2 執行個體與需要以程式設計方式存取 AWS 資源的應用程式搭配使用？ 如果是，請使用[適用於 EC2 的 IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)。

## 適當管理 IAM 使用者存取金鑰
<a name="iam-user-access-keys"></a>

如果您必須為程式設計存取建立存取金鑰 AWS，請為 IAM 使用者建立存取金鑰，僅授予使用者所需的許可。

遵循這些預防措施，以協助保護 IAM 使用者存取金鑰：
+ **請勿將存取金鑰直接嵌入程式碼。**[AWS SDK](https://aws.amazon.com/tools/#sdk) 和 [AWS 命令列工具](https://aws.amazon.com/tools/#cli)可讓您將存取金鑰放入已知位置，如此一來，就不必將其留在程式碼中。

  將存取金鑰放入以下其中一個位置：
  + ** AWS 登入資料檔案。**SDKs和 AWS AWS CLI 會自動使用您在登入資料檔案中存放的 AWS 登入資料。

    如需有關使用 AWS 登入資料檔案的資訊，請參閱 SDK 的文件。範例包括《 *適用於 Java 的 AWS SDK 開發人員指南*》中的[設定 AWS 登入資料和區域](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup-credentials.html)，以及*AWS Command Line Interface 《 使用者指南*》中的[組態和登入資料檔案](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)。

    若要存放 適用於 .NET 的 AWS SDK 和 的登入資料 AWS Tools for Windows PowerShell，建議您使用 SDK 存放區。如需詳細資訊，請參閱《適用於 .NET 的 AWS SDK 開發人員指南》**中的[使用 SDK Store](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/sdk-store.html)。
  + **環境變數.** 在多租用戶系統中，請選擇使用者環境變數，而不是系統環境變數。

    如需有關使用環境變數來存放憑證的詳細資訊，請參閱《AWS Command Line Interface 使用者指南》**中的[環境變數](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html)。
+ **對不同的應用程式使用不同的存取金鑰。**如果它們已經公開，這麼做可以隔離許可，並撤銷個別應用程式的存取金鑰。針對不同的應用程式擁有獨立的存取金鑰，也會在 [AWS CloudTrail](https://aws.amazon.com/cloudtrail/) 日誌檔中產生不同的項目。此組態可讓您更容易判斷哪個應用程式執行特定動作。
+ **視需要更新存取金鑰。**若有存取金鑰可能遭洩露的風險，請更新該存取金鑰並刪除先前的存取金鑰。如需詳細資訊，請參閱[更新存取金鑰](id-credentials-access-keys-update.md) 
+ **移除未使用的存取金鑰。**如果使用者離開組織，請移除相對應的 IAM 使用者，使該使用者無法再存取您的資源。若要了解上次使用存取金鑰的時間，請使用 [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html) API (AWS CLI 命令：[https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html))。
+ **為最機密的 API 操作使用臨時憑證並設定多重驗證。**利用 IAM 政策，可以指定允許使用者呼叫的 API 操作。在某些情況下，您可能希望在允許使用者執行特別敏感的動作之前，要求使用者使用 AWS MFA 進行身分驗證的額外安全性。例如，您可能擁有允許使用者執行 Amazon EC2 `RunInstances`、`DescribeInstances` 與 `StopInstances` 動作的政策。但您可能想要限制類似 的破壞性動作，`TerminateInstances`並確保使用者只有在使用 AWS MFA 裝置進行身分驗證時，才能執行該動作。如需詳細資訊，請參閱[透過 MFA 實現安全的 API 存取](id_credentials_mfa_configure-api-require.md)。

## 使用存取金鑰 AWS 存取行動應用程式
<a name="access-keys-mobile-app"></a>

您可以使用 AWS 行動應用程式存取一組有限的 AWS 服務和功能。行動應用程式可協助您在外出時支援事件回應。如需詳細資訊及下載應用程式，請參閱 [AWS 主控台行動應用程式](https://aws.amazon.com/console/mobile/)。

您可以使用主控台密碼或存取金鑰登入行動應用程式。根據最佳實務，請勿使用根使用者存取金鑰。相反地，我們強烈建議您除了在行動裝置上使用密碼或生物識別鎖定之外，還要建立專門用於使用行動應用程式管理 AWS 資源的 IAM 使用者。如果您遺失行動裝置，您可以移除 IAM 使用者的存取權。

**使用存取金鑰登入 (行動應用程式)**

1. 在行動裝置上開啟應用程式。

1. 如果這是您第一次將身分新增至裝置，請依序選擇 **Add an identity (新增身分)** 及選擇 **Access keys (存取金鑰)**。

   如果您已經使用其他身分登入，請依序選擇功能表圖示及 **Switch identity (切換身分)**。然後依序選擇 **Sign in as a different identity (以不同的身分登入)** 及 **Access keys (存取金鑰)**。

1. 在 **Access keys (存取金鑰)** 頁面輸入您的資訊。
   + **存取金鑰 ID** – 輸入您的存取金鑰 ID。
   + **私密存取金鑰** – 輸入您的私密存取金鑰。
   + **身分名稱** – 輸入將顯示在行動應用程式中的身分識別名稱。這不需要與您的 IAM 使用者名稱相符。
   + **身分識別 PIN** – 建立您將在未來登入期間使用的個人識別碼 (PIN)。
**注意**  
如果您為 AWS 行動應用程式啟用生物識別，系統會提示您使用您的指紋或臉部辨識進行驗證，而不是 PIN 碼。如果生物特徵辨識失敗，系統可能會提示您輸入 PIN 碼。

1. 選擇 **Verify and add keys (驗證並新增金鑰)**。

   您現在可以使用行動應用程式存取精選的一組資源。

## 相關資訊
<a name="more-resources"></a>

下列主題提供設定 AWS SDKs和 AWS CLI 以使用存取金鑰的指引：
+ 《 *適用於 Java 的 AWS SDK 開發人員指南*》中的[設定 AWS 登入資料和區域](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup-credentials.html) 
+ 《適用於 .NET 的 AWS SDK 開發人員指南》**中的[使用 SDK Store](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/sdk-store.html)
+ 《適用於 PHP 的 AWS SDK 開發人員指南》**中的[對 SDK 提供憑證](https://docs.aws.amazon.com/aws-sdk-php/v2/guide/credentials.html)
+ Boto 3 （適用於 Python 的AWS SDK) 文件中的[組態](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#configuration) 
+ 《AWS Tools for Windows PowerShell 使用者指南》**中的[使用 AWS 憑證](https://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html) 
+ 《AWS Command Line Interface 使用者指南》**中的[組態和憑證檔案](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) 
+ 《適用於 .NET 的 AWS SDK 開發人員指南》**中的[使用 IAM 角色授予存取權](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-hosm.html)
+ *AWS SDK for Java 2.x* 中的[為 Amazon EC2 設定 IAM 角色](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java-dg-roles.html)

## 使用存取金鑰和秘密金鑰憑證存取主控台
<a name="console-access-security-keys"></a>

除 AWS CLI外，還可以使用存取金鑰和秘密金鑰憑證直接存取 AWS 管理主控台 。這可以使用 API AWS STS [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html)呼叫來實現。IAM 主體只需透過使用 `GetFederationToken` 提供的臨時憑證和權杖建構主控台 URL，就能存取主控台。如需詳細資訊，請參閱[啟用 AWS 主控台的自訂身分代理程式存取](id_roles_providers_enable-console-custom-url.md)。

值得釐清的是，直接使用 IAM 或根使用者憑證登入主控台並啟用 MFA 時，將需要 MFA。不過，如果使用上述方法 (搭配 `GetFederationToken` 使用臨時憑證)，則不需要 MFA。



## 稽核存取金鑰
<a name="Using_access-keys-audit"></a>

您可以檢閱程式碼中的 AWS 存取金鑰，以判斷金鑰是否來自您擁有的帳戶。您可以使用 [https://docs.aws.amazon.com/cli/latest/reference/sts/get-access-key-info.html](https://docs.aws.amazon.com/cli/latest/reference/sts/get-access-key-info.html) AWS CLI 命令或 [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetAccessKeyInfo.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetAccessKeyInfo.html) AWS API 操作傳遞存取金鑰 ID。

 AWS CLI 和 AWS API 操作會傳回存取金鑰所屬 AWS 帳戶 的 ID。開頭為 `AKIA` 的存取金鑰是 IAM 使用者或 AWS 帳戶根使用者的長期登入資料。以 開頭的存取金鑰 IDs `ASIA` 是使用 AWS STS 操作建立的臨時登入資料。如果回應中的帳戶是您的，您可以根使用者的身分登入並檢閱根使用者存取金鑰。然後，您可以提取[憑證報告](id_credentials_getting-report.md)來了解擁有金鑰的是哪位 IAM 使用者。若要了解誰請求`ASIA`存取金鑰的臨時登入資料，請檢視 CloudTrail 日誌中的 AWS STS 事件。

基於安全考量，您可以[檢閱 AWS CloudTrail 日誌](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds)，以了解在其中執行動作的人員 AWS。您可以使用角色信任政策中的 `sts:SourceIdentity` 條件金鑰，請求使用者在擔任角色時指定身分。例如，您可以請求 IAM 使用者將自己的使用者名稱指定為其來源身分。這可以協助您判斷哪位使用者在 AWS中執行了特定動作。如需詳細資訊，請參閱[`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity)。

此操作不會指出存取金鑰的狀態。金鑰可能是作用中、非作用中或已刪除。作用中金鑰可能沒有操作的執行許可。提供已刪除的存取金鑰可能會傳回金鑰不存在的錯誤。

# AWS IAM 中的多重要素驗證
<a name="id_credentials_mfa"></a>

為了提高安全性，我們建議您設定多重要素驗證 (MFA)，以協助保護您的 AWS 資源。您可以為 AWS 帳戶根使用者 啟用 MFA AWS 帳戶，包括獨立帳戶、管理帳戶和成員帳戶，以及您的 IAM 使用者。我們建議您盡可能使用網路釣魚防護 MFA，例如通行金鑰和安全金鑰。這些 FIDO 型驗證器使用公有金鑰密碼編譯，可抵禦網路釣魚、man-in-the-middle和重播攻擊，提供比 TOTP 型選項更強的安全性。

對於所有類型的帳戶，其根使用者均強制執行 MFA。如需詳細資訊，請參閱[保護 AWS Organizations 您的帳戶根使用者登入資料](root-user-best-practices.md#ru-bp-organizations)。

當您為根使用者啟用 MFA 時，它僅影響根使用者憑證。帳戶中的 IAM 使用者都有自己憑證的不同身分，並且每個身分都有自己的 MFA 組態。如需有關使用 MFA 保護根使用者的詳細資訊，請參閱[的多重要素驗證 AWS 帳戶根使用者](enable-mfa-for-root.md)。

您的 AWS 帳戶根使用者 和 IAM 使用者可以註冊最多八個任何類型的 MFA 裝置。註冊多個 MFA 裝置可以提供彈性，並協助您降低裝置遺失或損壞時存取中斷的風險。您只需要一個 MFA 裝置登入 AWS 管理主控台 ，或透過 AWS CLI建立工作階段。

**注意**  
我們建議您要求人類使用者在存取時使用臨時登入資料 AWS。您是否考慮過使用 AWS IAM Identity Center？ 您可以使用 IAM Identity Center 集中管理對多個 的存取， AWS 帳戶 並為使用者提供受 MFA 保護的單一登入存取，可從單一位置存取其所有指派的帳戶。使用 IAM Identity Center，您可以在 IAM Identity Center 中建立和管理使用者身分，或輕鬆連線至您現有的 SAML 2.0 相容身分提供者。如需詳細資訊，請參閱 *AWS IAM Identity Center 使用者指南*中的[什麼是 IAM Identity Center？](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)。

MFA 增加了額外的安全性，要求使用者在存取 AWS 網站或服務時，除了登入憑證之外，還要從 AWS 支援的 MFA 機制提供唯一的身分驗證。

## MFA 類型
<a name="id_credentials_mfa-types"></a>

AWS 支援下列 MFA 類型：

**Contents**
+ [通行密鑰和安全金鑰](#passkeys-security-keys-for-iam-users)
+ [虛擬驗證器應用程式](#virtual-auth-apps-for-iam-users)
+ [硬體 TOTP 權杖](#hardware-totp-token-for-iam-users)

### 通行密鑰和安全金鑰
<a name="passkeys-security-keys-for-iam-users"></a>

AWS Identity and Access Management 支援 MFA 的通行金鑰和安全金鑰。根據 FIDO 標準，通行金鑰使用公有金鑰密碼編譯來提供比密碼更安全的強大、網路釣魚防護身分驗證。 AWS 支援兩種類型的通行金鑰：裝置繫結的通行金鑰 （安全金鑰） 和同步的通行金鑰。
+ **安全金鑰**：這些是用作身分驗證的第二個因素的實體裝置，例如 YubiKey。單一安全金鑰可以支援多個根使用者帳戶和 IAM 使用者。
+ **同步通行密鑰**：這些使用來自提供者 (例如 Google、Apple、Microsoft 帳戶等) 和第三方服務 (例如 1Password、Dashlane 和 Bitwarden 等) 的憑證管理工具作為第二個因素。

您可以使用內建的生物識別驗證器，例如 Apple MacBooks 上的 Touch ID，解鎖您的憑證管理工具並登入 AWS。通行密鑰是透過您選擇的提供者，使用指紋、面部或裝置 PIN 碼建立的。您也可以使用一台裝置 (例如行動裝置或硬體安全金鑰) 中的跨帳戶身分驗證 (CDA) 通行密鑰，在筆記型電腦等其他裝置上登入。如需詳細資訊，請參閱 [cross-device authentication](https://passkeys.dev/docs/reference/terms/#cross-device-authentication-cda) (CDA)。

您可以跨裝置同步通行金鑰，以便使用 登入 AWS，增強可用性和可復原性。如需啟用通行密鑰和安全金鑰的詳細資訊，請參閱[為根使用者啟用通行密鑰或安全金鑰 (主控台)](enable-fido-mfa-for-root.md)。

FIDO Alliance 維護與 FIDO 規範相容的所有[經 FIDO 認證的產品](https://fidoalliance.org/certification/fido-certified-products/)的清單。

### 虛擬驗證器應用程式
<a name="virtual-auth-apps-for-iam-users"></a>

在手機或其他裝置上執行並模擬實體裝置的虛擬驗證器應用程式。虛擬驗證器應用程式實作[以時間為基礎的一次性密碼](https://datatracker.ietf.org/doc/html/rfc6238) (TOTP) 算法，並且支援在單台裝置上使用多個權杖。使用者必須在登入期間出現提示時輸入裝置中的有效代碼。每個指派給使用者的權杖都必須是唯一的。使用者無法輸入另一個使用者的權杖來進行身分驗證。

我們建議您使用網路釣魚防護 MFA，例如[通行金鑰或安全金鑰](#passkeys-security-keys-for-iam-users)，以獲得最強大的保護。如果您還無法使用通行金鑰或安全金鑰，建議您在等待硬體購買核准或等待硬體送達時使用虛擬 MFA 裝置做為臨時措施。如需可以用來做為虛擬 MFA 裝置的支援應用程式清單，請參閱[多重要素驗證 (MFA)](https://aws.amazon.com/iam/features/mfa/?audit=2019q1)。

如需為 IAM 使用者設定虛擬 MFA 裝置的說明，請參閱[在 中指派虛擬 MFA 裝置 AWS 管理主控台](id_credentials_mfa_enable_virtual.md)。

**注意**  
當您透過 AWS 管理主控台 或在登入程序期間新增新的虛擬 MFA 裝置時， AWS 帳戶 會刪除 中未指派的虛擬 MFA 裝置。未指派的虛擬 MFA 裝置是指位於您帳戶中但帳戶根使用者或 IAM 使用者並未在登入程序中使用的裝置。將這些裝置刪除後，便可將新的虛擬 MFA 裝置新增至您的帳戶。刪除這些裝置後，您還可以重複使用裝置名稱。  
若要檢視帳戶中未指派的虛擬 MFA 裝置，您可以使用 [list-virtual-mfa-devices](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-virtual-mfa-devices.html) AWS CLI 命令或 [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html) 呼叫。
若要停用虛擬 MFA 裝置，您可以使用 [deactivate-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/deactivate-mfa-device.html) AWS CLI 命令或 [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html) 呼叫。停用後，裝置會變成未指派狀態。
若要將未指派的虛擬 MFA 裝置連接至 AWS 帳戶 根使用者或 IAM 使用者，您需要裝置產生的驗證碼，以及 [enable-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/enable-mfa-device.html) AWS CLI 命令或 [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html) 呼叫。

### 硬體 TOTP 權杖
<a name="hardware-totp-token-for-iam-users"></a>

一種在[以時間為基礎的一次性密碼 (TOTP) 演算法](https://datatracker.ietf.org/doc/html/rfc6238)的基礎上產生六位數字程式碼的硬體裝置。使用者必須在登入期間在第二個網頁上輸入裝置中的有效程式碼。

這些字符僅用於 AWS 帳戶。您只能使用具有其安全共用之唯一字符種子的字符 AWS。權杖種子是權杖生產時產生的私密金鑰。從其他來源購買的權杖將無法與 IAM 一起運作。若要確保相容性，您必須從下列其中一個連結購買硬體 MFA 裝置：[OTP 權杖](https://www.amazon.com/SafeNet-IDProve-Time-based-6-Digit-Services/dp/B002CRN5X8)或 [OTP 顯示卡](https://www.amazon.com/SafeNet-IDProve-Card-Amazon-Services/dp/B00J4NGUO4)。
+ 每個指派給使用者的 MFA 裝置都必須是唯一的。使用者無法輸入另一個使用者裝置的代碼來進行身分驗證。如需支援的硬體 MFA 裝置資訊，請參閱[多重要素驗證 (MFA)](https://aws.amazon.com/iam/features/mfa/?audit=2019q1)。
+ 如果想要使用實體 MFA 裝置，我們建議您使用安全金鑰作為硬體 TOTP 裝置的替代方案。安全金鑰沒有電池需求、可防禦網路釣魚，並支援單一裝置上的多個使用者。

您只能從 啟用通行金鑰或安全金鑰 AWS 管理主控台 ，不能從 AWS CLI 或 AWS API 啟用。在可以啟用安全金鑰之前，您必須擁有對裝置的實體存取權。

如需有關為 IAM 使用者設定硬體 TOTP 權杖的說明，請參閱[在 中指派硬體 TOTP 字符 AWS 管理主控台](id_credentials_mfa_enable_physical.md)。

**注意**  
**SMS 文字訊息型 MFA** – 已 AWS 結束支援啟用 SMS 多重要素驗證 (MFA)。我們建議擁有使用 SMS 簡訊式 MFA 的 IAM 使用者的客戶改為使用下列任一種替代方式：[通行密鑰或安全金鑰](id_credentials_mfa_enable_fido.md)、[虛擬 (軟體式) MFA 裝置](id_credentials_mfa_enable_virtual.md)，或[硬體 MFA 裝置](id_credentials_mfa_enable_physical.md)。您可以使用已分配的 SMS MFA 裝置來識別帳戶中的使用者。在 IAM 主控台中，從導覽窗格選擇 **Users** (使用者)，然後在表格中 **MFA** 欄位尋找具有 **SMS** 的使用者。

## MFA 建議
<a name="id_credentials_mfa-recommendations"></a>

為了協助保護您的身分，請遵循這些 MFA AWS 身分驗證的建議。
+ 我們建議您使用網路釣魚防護 MFA，例如[通行金鑰和安全金鑰](#passkeys-security-keys-for-iam-users)，做為 MFA 裝置。這些以 FIDO 為基礎的驗證程式可針對網路釣魚等攻擊提供最強大的保護。
+ 建議您為 中的 AWS 帳戶根使用者 和 IAM 使用者啟用多個 MFA 裝置 AWS 帳戶。這可讓您提高 中的安全列 AWS 帳戶 ，並簡化管理高權限使用者的存取，例如 AWS 帳戶根使用者。
+ 您可以向 AWS 帳戶根使用者 和 IAM 使用者註冊最多**八個**[目前支援 MFA 類型之任何組合的 MFA](https://aws.amazon.com/iam/features/mfa/) 裝置。使用多個 MFA 裝置時，您只需一個 MFA 裝置即可登入 ， AWS 管理主控台 或透過 以該使用者 AWS CLI 身分建立工作階段。IAM 使用者必須使用現有的 MFA 裝置進行身分驗證，才能啟用或停用其他 MFA 裝置。
+ 如果發生遺失、遭竊或無法存取的 MFA 裝置，您可以使用其中一個剩餘的 MFA 裝置來存取 ， AWS 帳戶 而無需執行 AWS 帳戶 復原程序。如果 MFA 裝置遺失或遭竊，應取消 MFA 裝置與 IAM 主體的可能關聯。
+ 使用多個 MFAs 可讓您的員工分散在地理位置或遠端工作，使用硬體型 MFA 存取 ， AWS 而不必協調員工之間單一硬體裝置的實體交換。
+ 針對 IAM 主體使用額外的 MFA 裝置，可讓您在日常使用期間使用一或多個 MFA 裝置，同時將實體 MFA 裝置維護在安全的實體位置 (例如文件庫)，或是用於備份和備援的安全位置。

**備註**  
您無法將安全金鑰或通行金鑰的 MFA 資訊傳遞給 AWS STS API 操作，以請求臨時憑證。您可以在使用安全金鑰或通行金鑰時，透過執行 `aws login`命令取得登入資料，以搭配 AWS CLI 和 AWS SDKs 使用。
您無法使用 AWS CLI 命令或 AWS API 操作來啟用 [FIDO 安全金鑰](id_credentials_mfa_enable_fido.md)。
同一個名稱不能用於多個根使用者或 IAM MFA 裝置。

## 其他資源
<a name="id_credentials_mfa-resources"></a>

下列資源可協助您進一步了解 MFA。
+ 如需使用 MFA 存取的詳細資訊 AWS，請參閱 [啟用 MFA 的登入](console_sign-in-mfa.md)。
+  您可以利用 IAM Identity Center 啟用 AWS 存取入口網站、IAM Identity Center 整合應用程式和 的安全 MFA 存取 AWS CLI。如需詳細資訊，請參閱[在 IAM Identity Center 中啟用 MFA](https://docs.aws.amazon.com/singlesignon/latest/userguide/mfa-getting-started.html)。

# 在 中指派通行金鑰或安全金鑰 AWS 管理主控台
<a name="id_credentials_mfa_enable_fido"></a>

通行金鑰是一種[多重要素驗證 (MFA) 裝置](id_credentials_mfa.md)，可用來保護您的 AWS 資源。 AWS 支援同步通行金鑰和裝置繫結通行金鑰，也稱為安全金鑰。

同步通行密鑰可讓 IAM 使用者在許多裝置 (甚至是新裝置) 上存取 FIDO 登入憑證，而無需在每個帳戶上重新註冊每個裝置。同步通行密鑰包含 Google、Apple 和 Microsoft 等第一方憑證管理員，以及 1Password、Dashlane 和 Bitwarden 等第三方憑證管理員，作為第二個要素。您也可以使用裝置上的生物識別技術 (例如 TouchID、FaceID) 來解除鎖定您選擇的憑證管理員，以使用通行密鑰。

或者，裝置綁定的通行密鑰會綁定至 FIDO 安全金鑰，您可以將其插入電腦上的 USB 連接埠，然後在出現提示時點選以安全地完成登入程序。若您已搭配其他服務使用 FIDO 安全金鑰，並且它具備 [AWS 支援的組態](id_credentials_mfa_fido_supported_configurations.md) (例如來自 Yubico 的 YubiKey 5)，您也可以搭配 AWS來使用它。否則，若您希望在 AWS中使用 MFA 的 WebAuthn，您需要購買 FIDO 安全金鑰。此外，FIDO 安全金鑰可以支援同一裝置上的多個 IAM 或根使用者，從而增強其公用程式以確保帳戶安全。如需兩種裝置類型的規格及購買資訊，請參閱[多重要素驗證](https://aws.amazon.com/iam/details/mfa/)。

您可以向 AWS 帳戶根使用者 和 IAM 使用者註冊最多**八個**[目前支援 MFA 類型之任何組合的 MFA](https://aws.amazon.com/iam/features/mfa/) 裝置。使用多個 MFA 裝置時，您只需一個 MFA 裝置登入 ， AWS 管理主控台 或透過 以該使用者 AWS CLI 身分建立工作階段。我們建議您註冊多個 MFA 裝置。例如，您可以註冊內建驗證器，也可以註冊存放在實體安全位置的安全金鑰。如果無法使用內建驗證器，則可以使用已註冊的安全金鑰。對於驗證器應用程式，我們也建議您在這些應用程式中啟用雲端備份或同步功能，以協助避免在具有驗證器應用程式的裝置遺失或損壞時，失去對帳戶的存取權限。

**注意**  
存取 AWS時，我們建議您要求人類使用者使用暫時性憑證。您的使用者可以 AWS 與身分提供者聯合到 ，並在其中使用其公司登入資料和 MFA 組態進行身分驗證。若要管理對 AWS 和商業應用程式的存取，建議您使用 IAM Identity Center。如需詳細資訊，請參閱 [IAM Identity Center 使用者指南](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)。

**Topics**
+ [必要許可](#enable-fido-mfa-for-iam-user-permissions-required)
+ [為您自己的 IAM 使用者啟用通行密鑰或安全金鑰 (主控台)](#enable-fido-mfa-for-own-iam-user)
+ [為另一個 IAM 使用者啟用通行密鑰或安全金鑰 (主控台)](#enable-fido-mfa-for-iam-user)
+ [取代通行密鑰或安全金鑰](#replace-fido-mfa)
+ [使用通行密鑰和安全金鑰的支援組態](id_credentials_mfa_fido_supported_configurations.md)

## 必要許可
<a name="enable-fido-mfa-for-iam-user-permissions-required"></a>

若要管理您自己的 IAM 使用者的 FIDO 通行密鑰，同時保護敏感的 MFA 相關動作，您必須擁有下列政策的許可：

**注意**  
ARN 值是靜態值，不是哪項協定被用來註冊驗證器的指示器。我們已棄用 U2F，因此所有新的實作都採用 WebAuthn。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowManageOwnUserMFA",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "DenyAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}
```

------

## 為您自己的 IAM 使用者啟用通行密鑰或安全金鑰 (主控台)
<a name="enable-fido-mfa-for-own-iam-user"></a>

您只能從 為您自己的 IAM 使用者啟用通行金鑰或安全金鑰 AWS 管理主控台 ，不能從 AWS CLI 或 AWS API 啟用。在可以啟用安全金鑰之前，您必須擁有對裝置的實體存取權。

**若要為您自己的 IAM 使用者啟用通行密鑰或安全金鑰 (主控台)**

1. 使用 AWS 您的帳戶 ID 或帳戶別名、IAM 使用者名稱和密碼登入 [IAM 主控台](https://console.aws.amazon.com/iam)。
**注意**  
為了方便起見， AWS 登入頁面會使用瀏覽器 Cookie 來記住您的 IAM 使用者名稱和帳戶資訊。如果您先前以不同的使用者身分登入，請選擇在頁面底部附近的 **Sign in to a different account** (登入不同的帳戶)，返回主要登入頁面。從那裡，您可以輸入要重新導向至 AWS 您帳戶的 IAM 使用者登入頁面的帳戶 ID 或帳戶別名。

   若要取得您的 AWS 帳戶 ID，請聯絡您的管理員。

1. 在右上方的導覽列中，選擇您的使用者名稱，然後選擇 **安全憑證** 。  
![\[AWS 管理主控台 安全登入資料連結\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. 在選取的 IAM 使用者頁面上，選擇**安全憑證**索引標籤。

1. 在 **Multi-Factor Authentication (MFA)** (多重要素驗證 (MFA)) 區段下方，選擇 **Assign MFA device** (指派 MFA 裝置)。

1. 在 **MFA 裝置名稱**頁面上，輸入**裝置名稱**，選擇**通行密鑰或安全金鑰**，然後選擇**下一步**。

1. 在**設定裝置**上，設定您的通行密鑰。使用臉部或指紋等生物識別資料、裝置 PIN，或將 FIDO 安全金鑰插入電腦的 USB 連接埠並點選，由此建立通行密鑰。

1. 遵循瀏覽器上的說明進行操作，然後選擇**繼續**。

您現在已註冊要與 搭配使用的通行金鑰或安全金鑰 AWS。如需搭配 使用 MFA 的詳細資訊 AWS 管理主控台，請參閱 [啟用 MFA 的登入](console_sign-in-mfa.md)。

## 為另一個 IAM 使用者啟用通行密鑰或安全金鑰 (主控台)
<a name="enable-fido-mfa-for-iam-user"></a>

您只能從 為其他 IAM 使用者啟用通行金鑰或安全性 AWS 管理主控台 ，而不能從 AWS CLI 或 AWS API 啟用。

**若要為另一個 IAM 使用者啟用通行密鑰或安全 (主控台)**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格中，選擇**使用者** 。

1. 在**使用者**下，選擇要為其啟用 MFA 的使用者名稱。

1. 在選取的 IAM 使用者頁面上，選擇**安全憑證**索引標籤。

1. 在 **Multi-Factor Authentication (MFA)** (多重要素驗證 (MFA)) 區段下方，選擇 **Assign MFA device** (指派 MFA 裝置)。

1. 在 **MFA 裝置名稱**頁面上，輸入**裝置名稱**，選擇**通行密鑰或安全金鑰**，然後選擇**下一步**。

1. 在**設定裝置**上，設定您的通行密鑰。使用臉部或指紋等生物識別資料、裝置 PIN，或將 FIDO 安全金鑰插入電腦的 USB 連接埠並點選，由此建立通行密鑰。

1. 遵循瀏覽器上的說明進行操作，然後選擇**繼續**。

您現在已為另一個 IAM 使用者註冊通行密鑰或安全金鑰，以便與 AWS搭配使用。如需搭配 使用 MFA 的詳細資訊 AWS 管理主控台，請參閱 [啟用 MFA 的登入](console_sign-in-mfa.md)。

## 取代通行密鑰或安全金鑰
<a name="replace-fido-mfa"></a>

您的 AWS 帳戶根使用者 和 IAM 使用者一次最多可以有八個 MFA 裝置指派給使用者[目前支援的 MFA 類型](https://aws.amazon.com/iam/features/mfa/)任意組合。如果使用者遺失 FIDO 驗證器或因為任何原因需要更換，您必須先停用舊的 FIDO 驗證器。然後，再為使用者新增新的 MFA 裝置。
+ 如需停用目前與 IAM 使用者相關聯的裝置，請參閱 [停用 MFA 裝置](id_credentials_mfa_disable.md)。
+ 若要為 IAM 使用者新增新的 FIDO 安全性金鑰，請參閱 [為您自己的 IAM 使用者啟用通行密鑰或安全金鑰 (主控台)](#enable-fido-mfa-for-own-iam-user)。

如果您無法存取新的通行密鑰或安全金鑰，您可以啟用新的虛擬 MFA 裝置或硬體 TOTP 權杖。請參閱以下其中一項以取得說明：
+ [在 中指派虛擬 MFA 裝置 AWS 管理主控台](id_credentials_mfa_enable_virtual.md) 
+ [在 中指派硬體 TOTP 字符 AWS 管理主控台](id_credentials_mfa_enable_physical.md) 

# 使用通行密鑰和安全金鑰的支援組態
<a name="id_credentials_mfa_fido_supported_configurations"></a>

您可以使用 FIDO2 裝置綁定的通行密鑰 (亦稱為安全金鑰)，作為使用目前支援組態的 IAM 的多重要素驗證 (MFA) 方法。其中包括 IAM 支援的 FIDO2 裝置，以及支援 FIDO2 的瀏覽器。註冊 FIDO2 裝置之前，檢查您使用的是最新的瀏覽器和作業系統 (OS) 版本。功能在不同的瀏覽器、驗證器和作業系統用戶端上的行為可能有所不同。如果您的裝置在某個瀏覽器上註冊失敗，您可以嘗試使用其他瀏覽器註冊。

FIDO2 是 FIDO U2F 的開放認證標準，也是 FIDO U2F 的延伸，可根據公有金鑰加密技術提供相同的高度安全性。FIDO2 由 W3C Web Authentication 規範 (WebAuthn API) 和 FIDO Alliance Client-to-Authenticator Protocol (CTAP，一個應用程式層通訊協定) 組成。CTAP 可透過外部驗證器在用戶端或平台之間進行通訊，例如瀏覽器或作業系統。當您在 中啟用 FIDO 認證驗證器時 AWS，安全金鑰會建立新的金鑰對，僅用於 AWS。首先，您需要輸入您的憑證。出現提示時，您需要點選安全金鑰，回應 AWS發出的身分驗證查問。若要進一步了解 FIDO2 標準，請參閱 [FIDO2 專案](https://en.wikipedia.org/wiki/FIDO2_Project)。

## 支援的 FIDO2 裝置 AWS
<a name="id_credentials_mfa_fido_supported_devices"></a>

IAM 支援透過 USB、Bluetooth 或 NFC 連線到裝置的 FIDO2 安全裝置。IAM 也支援平台驗證器，例如 TouchID 或 FaceID。IAM 不支援 Windows Hello 的本機通行密鑰註冊。若要建立和使用通行密鑰，Windows 使用者應該使用[跨裝置身分驗證](https://passkeys.dev/docs/reference/terms/#cross-device-authentication-cda)，您在其中使用諸如行動裝置等裝置的通行密鑰或硬體安全金鑰，登入諸如筆記型電腦等其他裝置。

**注意**  
AWS 需要存取電腦上的實體 USB 連接埠，才能驗證 FIDO2 裝置。安全金鑰無法與虛擬機器、遠端連線或瀏覽器無痕模式搭配使用。

FIDO Alliance 會維護與 FIDO 規範相容之所有 [FIDO2 產品](https://fidoalliance.org/certification/fido-certified-products/)的清單。

## 支援 FIDO2 的瀏覽器
<a name="id_credentials_mfa_fido_browsers"></a>

在 Web 瀏覽器中執行的 FIDO2 安全裝置的可用性取決於瀏覽器和作業系統的組合。以下瀏覽器目前支援使用安全金鑰：


****  

| Web 瀏覽器 | macOS 10.15\$1 | Windows 10 | Linux | iOS 14.5\$1 | Android 7\$1 | 
| --- | --- | --- | --- | --- | --- | 
| Chrome | 是 | 是 | 是 | 是 | 否 | 
| Safari | 是 | 否 | 否 | 是 | 否 | 
| Edge | 是 | 是 | 否 | 是 | 否 | 
| Firefox | 是 | 是 | 否 | 是 | 否 | 

**注意**  
依預設，目前支援 FIDO2 的大多數 Firefox 版本都不會啟用支援。如需在 Firefox 中啟用 FIDO2 支援的說明，請參閱 [對通行密鑰和 FIDO 安全金鑰進行疑難排解](troubleshoot_mfa-fido.md)。  
macOS 上的 Firefox 可能無法完全支援通行密鑰的跨裝置身分驗證工作流程。您可能會收到觸控安全金鑰的提示，而不是繼續進行跨裝置身分驗證。建議您使用不同的瀏覽器 (例如 Chrome 或 Safari)，在 macOS 上使用通行密鑰登入。

如需有關 YubiKey 等 FIDO2 認證的裝置的瀏覽器支援的詳細資訊，請參閱 [FIDO2 和 U2F 的作業系統和 Web 瀏覽器支援](https://support.yubico.com/hc/en-us/articles/360016615020-Operating-system-and-web-browser-support-for-FIDO2-and-U2F)。

### 瀏覽器外掛程式
<a name="id_credentials_mfa_fido_plugins"></a>

AWS 僅支援原生支援 FIDO2 AWS 的瀏覽器。不支援使用外掛程式來新增 FIDO2 瀏覽器支援。有些瀏覽器外掛程式與 FIDO2 標準不相容，可能會導致未預期的 FIDO2 安全金鑰結果。

如需停用瀏覽器外掛程式和其他故障診斷提示，請參閱 [我無法啟用 FIDO 安全性金鑰](troubleshoot_mfa-fido.md#troubleshoot_mfa-fido-cant-enable)。

## 裝置認證
<a name="id_credentials_mfa_fido_certifications"></a>

我們只會在註冊安全金鑰期間擷取和指派與裝置相關的認證，例如 FIPS 驗證和 FIDO 認證等級。從 [FIDO Alliance Metadata Service (MDS)](https://fidoalliance.org/metadata/) 中擷取裝置認證。如果安全金鑰的認證狀態或等級發生變更，它將不會自動反映在裝置標籤中。若要更新裝置的認證資訊，請再次註冊裝置以擷取更新的認證資訊。

AWS 在裝置註冊期間提供下列認證類型作為條件索引鍵，可從 FIDO MDS 中取得：FIPS-140-2、FIPS-140-3 和 FIDO 認證等級。您可以根據偏好的認證類型和等級，在其 IAM 政策中指定特定驗證器的註冊。如需詳細資訊，請參閱以下政策。

### 裝置認證的範例政策
<a name="id_credentials_mfa_fido_certifications_policies"></a>

下列使用案例顯示可讓您使用 FIPS 認證註冊 MFA 裝置的範例政策。

**Topics**
+ [使用案例 1：僅允許註冊具有 FIPS-140-2 L2 認證的裝置](#id_credentials_mfa_fido_certifications_policies_use_case_1)
+ [使用案例 2：允許註冊具有 FIPS-140-2 L2 和 FIDO L1 認證的裝置](#id_credentials_mfa_fido_certifications_policies_use_case_2)
+ [使用案例 3：允許註冊具有 FIPS-140-2 L2 或 FIPS-140-3 L2 認證的裝置](#id_credentials_mfa_fido_certifications_policies_use_case_3)
+ [使用案例 4：允許註冊具有 FIPS-140-2 L2 憑證的裝置，並支援其他 MFA 類型，例如虛擬身分驗證器和硬體 TOTP](#id_credentials_mfa_fido_certifications_policies_use_case_4)

#### 使用案例 1：僅允許註冊具有 FIPS-140-2 L2 認證的裝置
<a name="id_credentials_mfa_fido_certifications_policies_use_case_1"></a>

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-2-certification": "L2"
                }
            }
        }
    ]
}
```

------

#### 使用案例 2：允許註冊具有 FIPS-140-2 L2 和 FIDO L1 認證的裝置
<a name="id_credentials_mfa_fido_certifications_policies_use_case_2"></a>

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-2-certification": "L2",
                    "iam:FIDO-certification": "L1"
                }
            }
        }
    ]
}
```

------

#### 使用案例 3：允許註冊具有 FIPS-140-2 L2 或 FIPS-140-3 L2 認證的裝置
<a name="id_credentials_mfa_fido_certifications_policies_use_case_3"></a>

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-2-certification": "L2"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-3-certification": "L2"
                }
            }
        }
    ]
}
```

------

#### 使用案例 4：允許註冊具有 FIPS-140-2 L2 憑證的裝置，並支援其他 MFA 類型，例如虛擬身分驗證器和硬體 TOTP
<a name="id_credentials_mfa_fido_certifications_policies_use_case_4"></a>

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iam:EnableMFADevice",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "iam:RegisterSecurityKey": "Create"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "iam:EnableMFADevice",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "iam:RegisterSecurityKey": "Activate",
          "iam:FIDO-FIPS-140-2-certification": "L2"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "iam:EnableMFADevice",
      "Resource": "*",
      "Condition": {
        "Null": {
          "iam:RegisterSecurityKey": "true"
        }
      }
    }
  ]
}
```

------

## AWS CLI 和 AWS API
<a name="id_credentials_mfa_fido_cliapi"></a>

AWS 僅支援在 中使用通行金鑰和安全金鑰 AWS 管理主控台。[AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/) 和 [AWS API](https://aws.amazon.com/tools/) 不支援使用通行密鑰和安全金鑰進行 MFA，或用以存取[受 MFA 保護的 API 操作](id_credentials_mfa_configure-api-require.md)。

## 其他資源
<a name="id_credentials_mfa_fido_additional_resources"></a>
+ 如需在 中使用通行金鑰和安全金鑰的詳細資訊 AWS，請參閱 [在 中指派通行金鑰或安全金鑰 AWS 管理主控台](id_credentials_mfa_enable_fido.md)。
+ 如需在 中對通行金鑰和安全金鑰進行故障診斷的說明 AWS，請參閱 [對通行密鑰和 FIDO 安全金鑰進行疑難排解](troubleshoot_mfa-fido.md)。
+ 如需有關 FIDO2 支援的一般行業資訊，請參閱 [FIDO2 專案](https://en.wikipedia.org/wiki/FIDO2_Project)。

# 在 中指派虛擬 MFA 裝置 AWS 管理主控台
<a name="id_credentials_mfa_enable_virtual"></a>

**重要**  
AWS 建議您 AWS盡可能使用 MFA 的通行金鑰或安全金鑰。如需詳細資訊，請參閱[在 中指派通行金鑰或安全金鑰 AWS 管理主控台](id_credentials_mfa_enable_fido.md)。

您可以使用手機或其他裝置，做為虛擬多重要素驗證 (MFA) 裝置。若要執行此操作，安裝與 [RFC 6238 (以標準為基礎的 TOTP (以時間為基礎的單次密碼) 演算法)](https://datatracker.ietf.org/doc/html/rfc6238) 相容的行動應用程式。這些應用程式產生六位數的身分驗證代碼。由於驗證器可以在不安全的行動裝置上執行，而且程式碼可能會與未經授權的對象共用，因此以 TOTP 為基礎的 MFA 不提供與 [FIDO2](https://en.wikipedia.org/wiki/FIDO_Alliance#FIDO2) 安全金鑰和通行金鑰等網路釣魚防護選項相同的安全層級。我們建議您使用 MFA 的通行金鑰或安全金鑰，以最強大的防護來防範網路釣魚等攻擊。

如果您還無法使用通行金鑰或安全金鑰，建議您在等待任何硬體購買核准或硬體送達時，使用虛擬 MFA 裝置做為臨時措施。

大多數虛擬 MFA 應用程式支援建立多個虛擬裝置，可讓您為多個 AWS 帳戶 或 使用者使用相同的應用程式。您最多可以向 AWS 帳戶根使用者 和 IAM 使用者註冊**任意**組合 MFA [類型的八個 MFA](https://aws.amazon.com/iam/features/mfa/) 裝置。您只需一個 MFA 裝置即可登入 AWS 管理主控台 或透過 建立工作階段 AWS CLI。我們建議您註冊多個 MFA 裝置。對於驗證器應用程式，我們也建議您啟用雲端備份或同步功能，以協助避免在裝置遺失或損壞時，失去對帳戶的存取權。

AWS 需要產生六位數 OTP 的虛擬 MFA 應用程式。如需您可以使用的虛擬 MFA 應用程式清單，請參閱[多重要素驗證](https://aws.amazon.com/iam/features/mfa/?audit=2019q1)。

**Topics**
+ [必要許可](#mfa_enable_virtual_permissions-required)
+ [針對 IAM 使用者啟用虛擬 MFA 裝置 (主控台)](#enable-virt-mfa-for-iam-user)
+ [取代虛擬 MFA 裝置](#replace-virt-mfa)

## 必要許可
<a name="mfa_enable_virtual_permissions-required"></a>

若要為 IAM 使用者[AWS：允許經過 MFA 驗證的 IAM 使用者在「安全憑證」頁面中管理其自己的 MFA 裝置](reference_policies_examples_aws_my-sec-creds-self-manage-mfa-only.md)管理虛擬 MFA 裝置時，您必須擁有以下政策的許可：。

## 針對 IAM 使用者啟用虛擬 MFA 裝置 (主控台)
<a name="enable-virt-mfa-for-iam-user"></a>

您可以在 中使用 IAM AWS 管理主控台 ，為帳戶中的 IAM 使用者啟用和管理虛擬 MFA 裝置。您可以將標籤連接至 IAM 資源 (包括虛擬 MFA 裝置)，以識別、整理和控制其存取權。您只能在使用 AWS CLI 或 AWS API 時標記虛擬 MFA 裝置。若要使用 AWS CLI 或 AWS API 啟用和管理 MFA 裝置，請參閱 [在 AWS CLI 或 AWS API 中指派 MFA 裝置](id_credentials_mfa_enable_cliapi.md)。如需標記 IAM 資源的詳細資訊，請參閱 [AWS Identity and Access Management 資源的標籤](id_tags.md)。

**注意**  
您必須擁有實體存取託管使用者的虛擬 MFA 裝置的硬體，才能設定 MFA。例如，您可以為使用者設定 MFA，該使用者將使用在智慧型手機上執行的虛擬 MFA 裝置。在這種情況下，您必須有可用的智慧型手機，才能完成精靈。因此，您可能想要讓使用者設定和管理自己的虛擬 MFA 裝置。在這種情況下，您必須授予使用者執行必要 IAM 動作的許可。如需詳細資訊以及授予這些許可的 IAM 政策範例，請參閱 [IAM 教學課程：允許使用者管理其憑證和 MFA 設定](tutorial_users-self-manage-mfa-and-creds.md) 和範例政策 [AWS：允許經過 MFA 驗證的 IAM 使用者在「安全憑證」頁面中管理其自己的 MFA 裝置](reference_policies_examples_aws_my-sec-creds-self-manage-mfa-only.md)。

**為 IAM 使用者啟用虛擬 MFA 裝置 (主控台)**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格中，選擇**使用者** 。

1. 在**使用者**清單中選擇 IAM 使用者名稱。

1. 選擇 **安全憑證** 標籤。在 **Multi-Factor Authentication (MFA)** (多重要素驗證 (MFA)) 區段下方，選擇 **Assign MFA device** (指派 MFA 裝置)。

1. 在精靈中輸入 **Device name**，然後選擇 **驗證器應用程式**，再選擇 **下一步**。

   IAM 將產生並顯示虛擬 MFA 裝置的配置資訊，包括 QR 碼圖形。此圖形代表「私密組態金鑰」，可用來在不支援 QR 碼的裝置上手動輸入。

1. 開啟您的虛擬 MFA 應用程式。如需可以用於託管虛擬 MFA 裝置的應用程式清單，請參閱[多重要素驗證](https://aws.amazon.com/iam/details/mfa/)。

   如果虛擬 MFA 應用程式支援多個虛擬 MFA 裝置或帳戶，請選擇對應的選項以建立新的虛擬 MFA 裝置或帳戶。

1. 判定 MFA 應用程式是否支援 QR 碼，然後執行以下操作之一：
   + 從精靈中，選擇 **Show QR code (顯示 QR 碼)**，然後使用應用程式掃描 QR 碼。這可能是攝影機圖示或使用裝置的攝影機掃描代碼的**掃描代碼**選項。
   + 在精靈中，選擇 **Show secret key** (顯示私密金鑰)，然後在您的 MFA 應用程式中輸入私密金鑰。

   完成操作後，虛擬 MFA 裝置會開始產生一次性密碼。

1. 在 **設定裝置** 頁面中的 **MFA 代碼 1** 方塊內輸入虛擬 MFA 裝置上目前顯示的一次性密碼。請等待 30 秒，裝置將產生新的一次性密碼。然後將第二個一次性密碼輸入 **MFA code 2 (MFA 代碼 2)** 方塊中。選擇 **Add MFA** (新增 MFA)。
**重要**  
產生代碼之後立即提交您的請求。如果在產生代碼後等待很長時間才提交請求，MFA 裝置會成功地與使用者建立關聯，但 MFA 裝置不同步。會發生這種情況是因為定時式的一次性密碼 (TOTP) 在過了一小段時間後就會過期。這種情況下，您可以[重新同步裝置](id_credentials_mfa_sync.md)。

虛擬 MFA 裝置現在可以與 搭配使用 AWS。如需搭配 使用 MFA 的詳細資訊 AWS 管理主控台，請參閱 [啟用 MFA 的登入](console_sign-in-mfa.md)。

**注意**  
當您透過 AWS 管理主控台 或在登入程序期間新增新的虛擬 MFA 裝置時， AWS 帳戶 會刪除 中未指派的虛擬 MFA 裝置。未指派的虛擬 MFA 裝置是指位於您帳戶中但帳戶根使用者或 IAM 使用者並未在登入程序中使用的裝置。將這些裝置刪除後，便可將新的虛擬 MFA 裝置新增至您的帳戶。刪除這些裝置後，您還可以重複使用裝置名稱。  
若要檢視帳戶中未指派的虛擬 MFA 裝置，您可以使用 [list-virtual-mfa-devices](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-virtual-mfa-devices.html) AWS CLI 命令或 [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html) 呼叫。
若要停用虛擬 MFA 裝置，您可以使用 [deactivate-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/deactivate-mfa-device.html) AWS CLI 命令或 [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html) 呼叫。停用後，裝置會變成未指派狀態。
若要將未指派的虛擬 MFA 裝置連接至 AWS 帳戶 根使用者或 IAM 使用者，您需要裝置產生的驗證碼，以及 [enable-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/enable-mfa-device.html) AWS CLI 命令或 [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html) 呼叫。

## 取代虛擬 MFA 裝置
<a name="replace-virt-mfa"></a>

您的 AWS 帳戶根使用者 和 IAM 使用者可以註冊最多**八個** MFA 裝置，任何 MFA 類型的組合。如果使用者遺失裝置或基於任何原因需要更換，請停用舊裝置。然後，再為使用者加入新的裝置。
+ 如需停用目前與另一個 IAM 使用者相關聯的裝置，請參閱 [停用 MFA 裝置](id_credentials_mfa_disable.md)。
+ 若要新增另一個 IAM 使用者的取代用虛擬 MFA 裝置，請遵循上方 [針對 IAM 使用者啟用虛擬 MFA 裝置 (主控台)](#enable-virt-mfa-for-iam-user) 程序中的步驟。
+ 若要為 新增替代虛擬 MFA 裝置 AWS 帳戶根使用者，請遵循程序 中的步驟[針對根使用者啟用虛擬 MFA 裝置 (主控台)](enable-virt-mfa-for-root.md)。

# 在 中指派硬體 TOTP 字符 AWS 管理主控台
<a name="id_credentials_mfa_enable_physical"></a>

**重要**  
AWS 建議您 AWS盡可能使用 MFA 的通行金鑰或安全金鑰。如需詳細資訊，請參閱[在 中指派通行金鑰或安全金鑰 AWS 管理主控台](id_credentials_mfa_enable_fido.md)。

硬體 TOTP 權杖會在以時間為基礎的一次性密碼 (TOTP) 演算法的基礎上產生六位數字程式碼。使用者必須在登入程序期間出現提示時輸入裝置中的有效代碼。指派給使用者的每個 MFA 裝置必須是唯一的；使用者不能從另一個使用者的裝置中輸入代碼進行身分驗證。MFA 裝置無法跨帳戶或使用者共用。

硬體 TOTP 權杖與 [FIDO 安全金鑰](id_credentials_mfa_enable_fido.md)都是您購買的實體裝置。硬體 MFA 裝置會在您登入時產生 TOTP 代碼以進行身分驗證 AWS。它們依賴電池，這可能需要 AWS 隨著時間的推移替換和重新同步。FIDO 安全金鑰使用公有金鑰加密，不需要電池並提供無縫的身分驗證程序。我們建議使用 FIDO 安全金鑰來防禦網路釣魚，這為 TOTP 裝置提供了更安全的替代方案。此外，FIDO 安全金鑰可以支援同一裝置上的多個 IAM 或根使用者，從而增強其公用程式以確保帳戶安全。如需兩種裝置類型的規格及購買資訊，請參閱[多重要素驗證](https://aws.amazon.com/iam/details/mfa/)。



您可以從 、 AWS 管理主控台命令列或 IAM API 為 IAM 使用者啟用硬體 TOTP 字符。若要為您的 啟用 MFA 裝置 AWS 帳戶根使用者，請參閱 [針對根使用者啟用硬體 TOTP 權杖 (主控台)](enable-hw-mfa-for-root.md)。

您可以向 AWS 帳戶根使用者 和 IAM 使用者註冊最多**八個** MFA 裝置，其為[目前支援的 MFA 類型](https://aws.amazon.com/iam/features/mfa/)的任何組合。使用多個 MFA 裝置時，您只需一個 MFA 裝置即可登入 ， AWS 管理主控台 或透過 以該使用者 AWS CLI 身分建立工作階段。

**重要**  
建議您為您的使用者啟用多台 MFA 裝置，以便在一台 MFA 裝置遺失或無法存取時繼續存取您的帳戶。

**注意**  
如果您想要從命令列啟用 MFA 裝置，請使用 [https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html)。若要使用 IAM API 啟用 MFA 裝置，請使用 [https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html) 操作。

**Topics**
+ [必要許可](#enable-hw-mfa-for-iam-user-permissions-required)
+ [啟用您 IAM 使用者的硬體 TOTP 權杖 (主控台)](#enable-hw-mfa-for-own-iam-user)
+ [啟用另一個 IAM 使用者的硬體 TOTP 權杖 (主控台)](#enable-hw-mfa-for-iam-user)
+ [取代實體 MFA 裝置](#replace-phys-mfa)

## 必要許可
<a name="enable-hw-mfa-for-iam-user-permissions-required"></a>

若要管理您 IAM 使用者的硬體 TOTP 權杖，同時保護敏感的 MFA 相關動作，您必須擁有下列政策的許可：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowManageOwnUserMFA",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "DenyAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}
```

------

## 啟用您 IAM 使用者的硬體 TOTP 權杖 (主控台)
<a name="enable-hw-mfa-for-own-iam-user"></a>

 您可以從 AWS 管理主控台啟用您自己的硬體 TOTP 權杖。

**注意**  
在您可以啟用硬體 TOTP 權杖之前，您必須擁有裝置的實體存取權。

**要啟用您 IAM 使用者的硬體 TOTP 權杖 (主控台)**

1. 使用 AWS 您的帳戶 ID 或帳戶別名、IAM 使用者名稱和密碼登入 [IAM 主控台](https://console.aws.amazon.com/iam)。
**注意**  
為了方便起見， AWS 登入頁面會使用瀏覽器 Cookie 來記住您的 IAM 使用者名稱和帳戶資訊。如果您先前以不同的使用者身分登入，請選擇在頁面底部附近的 **Sign in to a different account** (登入不同的帳戶)，返回主要登入頁面。從那裡，您可以輸入 AWS 您的帳戶 ID 或帳戶別名，以重新導向至您帳戶的 IAM 使用者登入頁面。

   若要取得您的 AWS 帳戶 ID，請聯絡您的管理員。

1. 在右上方的導覽列中，選擇您的使用者名稱，然後選擇 **安全憑證** 。  
![\[AWS 管理主控台 安全登入資料連結\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. 在 **AWS IAM credentials** ( IAM 憑證) 索引標籤上，在 **Multi-factor authentication (MFA)** (多重要素驗證 (MFA)) 區段，選擇 **Assign MFA device** (指派 MFA 裝置)。

1. 在精靈中，輸入一個**裝置名稱**，然後選取 **Hardware TOTP token** (硬體 TOTP 權杖)，再選擇 **Next** (下一步)。

1. 輸入裝置序號。序號通常位於裝置的背面。

1. 在 **MFA code 1 (MFA 代碼 1)** 方塊中，輸入 MFA 裝置顯示的六位數字。您可能需要按下裝置正面的按鈕以顯示數字。  
![\[IAM 儀表板，MFA 裝置\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/MFADevice.png)

1. 當裝置在重新整理代碼時，等候 30 秒時間後，在 **MFA code 2 (MFA 代碼 2)** 方塊中輸入六位數字。您可能需要再次按下裝置正面的按鈕以顯示第二個數字。

1. 選擇 **Add MFA** (新增 MFA)。
**重要**  
產生驗證代碼之後立即提交您的請求。如果在產生代碼後等待很長時間才提交請求，MFA 裝置會成功地與使用者建立關聯，但 MFA 裝置卻變成不同步。會發生這種情況是因為定時式的一次性密碼 (TOTP) 在過了一小段時間後就會過期。這種情況下，您可以[重新同步裝置](id_credentials_mfa_sync.md)。

裝置已準備好與 搭配使用 AWS。如需與 AWS 管理主控台一起使用 MFA 的詳細資訊，請參閱 [啟用 MFA 的登入](console_sign-in-mfa.md)。

## 啟用另一個 IAM 使用者的硬體 TOTP 權杖 (主控台)
<a name="enable-hw-mfa-for-iam-user"></a>

 您可以從 AWS 管理主控台啟用另一個 IAM 使用者的硬體 TOTP 權杖。

**要啟用另一個 IAM 使用者的硬體 TOTP 權杖 (主控台)**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇**使用者** 。

1. 選擇要為其啟用 MFA 的使用者名稱。

1. 選擇 **安全憑證** 標籤。在 **Multi-Factor Authentication (MFA)** (多重要素驗證 (MFA)) 區段下方，選擇 **Assign MFA device** (指派 MFA 裝置)。

1. 在精靈中，輸入一個**裝置名稱**，然後選取 **Hardware TOTP token** (硬體 TOTP 權杖)，再選擇 **Next** (下一步)。

1. 輸入裝置序號。序號通常位於裝置的背面。

1. 在 **MFA code 1 (MFA 代碼 1)** 方塊中，輸入 MFA 裝置顯示的六位數字。您可能需要按下裝置正面的按鈕以顯示數字。  
![\[IAM 儀表板，MFA 裝置\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/MFADevice.png)

1. 當裝置在重新整理代碼時，等候 30 秒時間後，在 **MFA code 2 (MFA 代碼 2)** 方塊中輸入六位數字。您可能需要再次按下裝置正面的按鈕以顯示第二個數字。

1. 選擇 **Add MFA** (新增 MFA)。
**重要**  
產生驗證代碼之後立即提交您的請求。如果在產生代碼後等待很長時間才提交請求，MFA 裝置會成功地與使用者建立關聯，但 MFA 裝置卻變成不同步。會發生這種情況是因為定時式的一次性密碼 (TOTP) 在過了一小段時間後就會過期。這種情況下，您可以[重新同步裝置](id_credentials_mfa_sync.md)。

裝置已準備好與 搭配使用 AWS。如需與 AWS 管理主控台一起使用 MFA 的詳細資訊，請參閱 [啟用 MFA 的登入](console_sign-in-mfa.md)。

## 取代實體 MFA 裝置
<a name="replace-phys-mfa"></a>

您的 AWS 帳戶根使用者 和 IAM 使用者一次最多可以有八個 MFA 裝置指派給使用者[目前支援的 MFA 類型](https://aws.amazon.com/iam/features/mfa/)任意組合。如果使用者遺失裝置或基於任何原因需要汰換，您必須先停用舊裝置。然後，再為使用者加入新的裝置。
+ 如需停用目前與使用者相關聯的裝置，請參閱 [停用 MFA 裝置](id_credentials_mfa_disable.md)。
+ 若要新增 IAM 使用者適用的替代硬體 TOTP 權杖，請遵循本主題稍早介紹的 [啟用另一個 IAM 使用者的硬體 TOTP 權杖 (主控台)](#enable-hw-mfa-for-iam-user) 程序。
+ 若要為 新增替換硬體 TOTP 權杖 AWS 帳戶根使用者，請遵循本主題[針對根使用者啟用硬體 TOTP 權杖 (主控台)](enable-hw-mfa-for-root.md)先前程序中的步驟。

# 在 AWS CLI 或 AWS API 中指派 MFA 裝置
<a name="id_credentials_mfa_enable_cliapi"></a>

您可以使用 AWS CLI 命令或 AWS API 操作，為 IAM 使用者啟用虛擬 MFA 裝置。您無法使用 AWS 帳戶根使用者 AWS CLI、 AWS API、Tools for Windows PowerShell 或任何其他命令列工具為 啟用 MFA 裝置。不過，您可以使用 AWS 管理主控台 為根使用者啟用 MFA 裝置。

當您從 啟用 MFA 裝置時 AWS 管理主控台，主控台會為您執行多個步驟。如果您改為使用 AWS CLI、Tools for Windows PowerShell 或 AWS API 建立虛擬裝置，則必須以正確的順序手動執行步驟。例如，如果要建立虛擬 MFA 裝置，則必須建立 IAM 物件，將程式碼擷取為字串或 QR 碼圖形，然後同步該裝置並將其與 IAM 使用者建立關聯。請參閱 [New-IAMVirtualMFADevice](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=New-IAMVirtualMFADevice.html&tocid=New-IAMVirtualMFADevice) 中的**範例**章節以了解更多詳細資訊。對於實體裝置，您可以跳過建立步驟，直接同步該裝置並將其與使用者建立關聯。

您可以將標籤連接至 IAM 資源 (包括虛擬 MFA 裝置)，以識別、整理和控制其存取權。您只能在使用 AWS CLI 或 AWS API 時標記虛擬 MFA 裝置。

使用 SDK 或 CLI 的 IAM 使用者可以透過呼叫 [https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html) 啟用額外的 MFA 裝置，或者透過呼叫 [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html) 停用現有的 MFA 裝置。若要成功執行此動作，這些使用者必須先使用現有的 MFA 裝置呼叫 [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) 並提交 MFA 代碼。此呼叫會傳回暫時的安全憑證，然後可使用此憑證簽署需要 MFA 身分驗證的 API 作業。如需要求和回應的範例，請參閱 [`GetSessionToken` - 不受信任環境中使用者的暫時憑證](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getsessiontoken)。

**在 IAM 中建立虛擬裝置實體來代表虛擬 MFA 裝置**  
這些命令提供在以下許多命令中代替序號的裝置 ARN。
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/create-virtual-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-virtual-mfa-device.html) 
+ AWS API： [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateVirtualMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateVirtualMFADevice.html)

**啟用 MFA 裝置以搭配 使用 AWS**  
這些命令會將裝置與 同步， AWS 並將其與使用者建立關聯。如果裝置是虛擬裝置，則將虛擬裝置的 ARN 做為序號使用。

**重要**  
產生驗證代碼之後立即提交您的請求。如果在產生代碼後等待很長時間才提交請求，MFA 裝置會成功地與使用者建立關聯，但 MFA 裝置卻變成不同步。會發生這種情況是因為定時式的一次性密碼 (TOTP) 在過了一小段時間後就會過期。如果發生這種情況，可以使用下面介紹的命令重新同步裝置。
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html) 
+ AWS API： [https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html)

**停用裝置**  
這些命令將取消裝置與使用者間的關聯並停用裝置。如果裝置是虛擬裝置，則將虛擬裝置的 ARN 做為序號使用。您也必須單獨刪除虛擬裝置實體。
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html) 
+ AWS API： [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html)

**列出虛擬 MFA 裝置實體**  
使用這些命令來列出虛擬 MFA 裝置的實體。
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/list-virtual-mfa-devices.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-virtual-mfa-devices.html) 
+ AWS API： [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html)

**標記虛擬 MFA 裝置**  
使用這些指令來標記虛擬 MFA 裝置。
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/tag-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-mfa-device.html) 
+ AWS API： [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagMFADevice.html)

**列出虛擬 MFA 裝置的標籤**  
使用這些命令列出連接至虛擬 MFA 裝置的標籤。
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/list-mfa-device-tags.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-mfa-device-tags.html) 
+ AWS API： [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADeviceTags.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADeviceTags.html)

**取消標記虛擬 MFA 裝置**  
使用這些命令移除連接至虛擬 MFA 裝置的標籤。
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/untag-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-mfa-device.html) 
+ AWS API： [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagMFADevice.html)

**重新同步 MFA 裝置**  
如果裝置正在產生 不接受的代碼，請使用這些命令 AWS。如果裝置是虛擬裝置，則將虛擬裝置的 ARN 做為序號使用。
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/resync-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/resync-mfa-device.html) 
+ AWS API： [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResyncMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResyncMFADevice.html)

**刪除 IAM 中的虛擬 MFA 裝置實體**  
在裝置與使用者取消關聯後，您可以刪除裝置實體。
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-virtual-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-virtual-mfa-device.html) 
+ AWS API： [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteVirtualMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteVirtualMFADevice.html)

**復原遺失或無法運作的虛擬 MFA 裝置**  
有時，主控虛擬 MFA 應用程式的使用者的裝置會發生遺失、遭到替換，或無法運作。當這種情況發生時，使用者無法自行復原。使用者必須聯絡管理員以停用裝置。如需詳細資訊，請參閱[在 IAM 中復原受 MFA 保護的身分](id_credentials_mfa_lost-or-broken.md)。

# 檢查 MFA 狀態
<a name="id_credentials_mfa_checking-status"></a>

使用 IAM 主控台來檢查 AWS 帳戶根使用者 或 IAM 使用者是否已啟用有效的 MFA 裝置。

**若要查看根使用者的 MFA 狀態**

1.  AWS 管理主控台 使用您的根使用者憑證登入 ，然後在 開啟 IAM 主控台[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在右上方的導覽列中，選擇您的使用者名稱，然後選擇 **安全憑證** 。

1. 檢查 **多重要素驗證 (MFA)** 下方，查看 MFA 是否已啟用或停用。如果 MFA 尚未啟動，則會顯示提醒符號 (![\[Alert icon\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/console-alert-icon.console.png)) 

如果您想要啟用 MFA 帳戶，請參閱下列其中一項：
+ [針對根使用者啟用虛擬 MFA 裝置 (主控台)](enable-virt-mfa-for-root.md)
+ [為根使用者啟用通行密鑰或安全金鑰 (主控台)](enable-fido-mfa-for-root.md)
+ [針對根使用者啟用硬體 TOTP 權杖 (主控台)](enable-hw-mfa-for-root.md)

**查看 IAM 使用者的 MFA 狀態**

1. 在 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇 **Users** (使用者)。

1. 如有必要，請透過完成以下步驟將 **MFA** 欄新增到使用者表格：

   1. 在最右側的表格上方，選擇設定圖示 (![\[Settings icon\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/console-settings-icon.console.png))。

   1. 在 **Manage Columns (管理欄)** 中，選取 **MFA**。

   1. (選用) 清除您不想在使用者資料表中顯示的任何資料欄標題的核取方塊。

   1. 選擇 **Close (關閉)** 返回使用者清單。

1. **MFA** 欄告訴您有關已啟用的 MFA 裝置。如果沒有給使用者作用中的 MFA 裝置，則主控台會顯示 **None (無)**。如果使用者已啟用 MFA 裝置，則 **MFA** 欄顯示啟用裝置的類型值為 **Virtual** (虛擬)、**Security Key** (安全金鑰)、**Hardware** (硬體) 或 **SMS**。
**注意**  
AWS 結束對啟用 SMS 多重要素驗證 (MFA) 的支援。建議擁有使用 SMS 簡訊式 MFA 的 IAM 使用者的客戶改為使用下列任一種替代方式：[虛擬 (軟體式) MFA 裝置](id_credentials_mfa_enable_virtual.md)、[FIDO 安全性金鑰](id_credentials_mfa_enable_fido.md)或[硬體 MFA 裝置](id_credentials_mfa_enable_physical.md)。您可以使用已分配的 SMS MFA 裝置來識別帳戶中的使用者。為此，請前往 IAM 主控台，從導覽窗格中選擇 **Users** (使用者)，然後在表的 **MFA** 列中尋找具有 **SMS** 的使用者。

1. 若要查看有關使用者的 MFA 裝置的其他資訊，請選擇要檢查其 MFA 狀態的使用者名稱。然後選擇 **Security credentials** (安全憑證) 索引標籤。

1. 如果沒有給使用者作用中的 MFA 裝置，則主控台會顯示 **無 MFA 裝置。在**多重要素驗證 (MFA) **區段中指派 MFA 裝置來改善 AWS 環境的安全性**。如果使用者有已啟用的 MFA 裝置，則 **Multi-factor authentication (MFA)** (多重要素驗證 (MFA)) 區段會顯示有關這些裝置的詳細資訊：
   + 裝置名稱
   + 裝置類型
   + 裝置識別符，例如實體裝置的序號或 AWS 虛擬裝置的 中的 ARN
   + 何時建立裝置

若要移除或重新同步裝置，請選擇裝置旁的選項按鈕，然後選取 **Remove** (移除) 或 **Resync** (重新同步)。

如需有關啟用 MFA 的詳細資訊，請參閱以下內容：
+ [在 中指派虛擬 MFA 裝置 AWS 管理主控台](id_credentials_mfa_enable_virtual.md)
+ [在 中指派通行金鑰或安全金鑰 AWS 管理主控台](id_credentials_mfa_enable_fido.md)
+ [在 中指派硬體 TOTP 字符 AWS 管理主控台](id_credentials_mfa_enable_physical.md)

# 重新同步虛擬和硬體 MFA 裝置
<a name="id_credentials_mfa_sync"></a>

您可以使用 AWS 來重新同步虛擬和硬體多重要素驗證 (MFA) 裝置。如果您的裝置在您嘗試使用時未同步，登入嘗試失敗，且 IAM 提示您重新同步裝置。

**注意**  
FIDO 安全性金鑰不會失去同步。若 FIDO 安全性金鑰遺失或損壞，您可以停用它。如需停用任何 MFA 裝置類型的說明，請參閱 [為另一個 IAM 使用者停用 MFA 裝置 (主控台)](id_credentials_mfa_disable.md#deactivate-mfa-for-user)。

身為 AWS 管理員，如果 IAM 使用者的虛擬和硬體 MFA 裝置不同步，您可以重新同步它們。

如果您的 AWS 帳戶根使用者 MFA 裝置無法運作，您可以使用 IAM 主控台重新同步裝置，無論是否完成登入程序。如果您無法成功重新同步處理裝置，您可能需要為裝置取消關聯，再重新關聯此裝置。如需如何執行此作業的資訊，請參閱 [停用 MFA 裝置](id_credentials_mfa_disable.md) 和 [AWS IAM 中的多重要素驗證](id_credentials_mfa.md)。

**Topics**
+ [必要許可](#id_credentials_mfa_sync_console-permissions-required)
+ [重新同步虛擬及硬體 MFA 裝置 (IAM 主控台)](#id_credentials_mfa_sync_console)
+ [重新同步虛擬及硬體 MFA 裝置 (AWS CLI)](#id_credentials_mfa_sync_cli)
+ [重新同步虛擬和硬體 MFA 裝置 (AWS API)](#id_credentials_mfa_sync_api)

## 必要許可
<a name="id_credentials_mfa_sync_console-permissions-required"></a>

若要為自己的 IAM 使用者重新同步虛擬或硬體 MFA 裝置，您必須擁有以下政策的許可。此政策不允許您建立或停用裝置。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowListActions",
            "Effect": "Allow",
            "Action": [
                "iam:ListVirtualMFADevices"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowUserToViewAndManageTheirOwnUserMFA",
            "Effect": "Allow",
            "Action": [
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "BlockAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:ListMFADevices",
                "iam:ListVirtualMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}
```

------

## 重新同步虛擬及硬體 MFA 裝置 (IAM 主控台)
<a name="id_credentials_mfa_sync_console"></a>

您可以使用 IAM 主控台來重新同步虛擬及硬體 MFA 裝置。

**重新同步您 IAM 使用者的虛擬或硬體 MFA 裝置 (主控台)**

1. 使用 AWS 您的帳戶 ID 或帳戶別名、IAM 使用者名稱和密碼登入 [IAM 主控台](https://console.aws.amazon.com/iam)。
**注意**  
為了方便起見， AWS 登入頁面會使用瀏覽器 Cookie 來記住您的 IAM 使用者名稱和帳戶資訊。如果您先前以不同的使用者身分登入，請選擇在頁面底部附近的 **Sign in to a different account** (登入不同的帳戶)，返回主要登入頁面。在那裡，您可以輸入要重新導向至 AWS 您帳戶的 IAM 使用者登入頁面的帳戶 ID 或帳戶別名。

   若要取得您的 AWS 帳戶 ID，請聯絡您的管理員。

1. 在右上方的導覽列中，選擇您的使用者名稱，然後選擇 **安全憑證** 。  
![\[AWS 管理主控台安全登入資料連結\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. 在 **AWS IAM 憑證** 標籤的 **多重要素驗證 (MFA)** 區段選擇 MFA 裝置旁的選項按鈕，然後選擇 **重新同步**。

1. 將裝置接下來連續產生的兩個代碼輸入 **MFA code 1 (MFA 代碼 1)** 和 **MFA code 2 (MFA 代碼 2)**。然後選擇 **Resync** (重新同步)。
**重要**  
產生代碼之後立即提交您的請求。如果您產生代碼，然後等太久而無法提交請求、請求會出現運作，但裝置保持未同步。會發生這種情況是因為定時式的一次性密碼 (TOTP) 在過了一小段時間後就會過期。

**重新同步另一個 IAM 使用者的虛擬或硬體 MFA 裝置 (主控台)**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇 **Users (使用者)**，然後選擇需要重新同步 MFA 裝置的使用者名稱。

1. 選擇 **Security credentials** (安全憑證) 索引標籤。在 **多重要素驗證 (MFA)** 區段中選擇 MFA 裝置旁的選項按鈕，然後選擇 **重新同步**。

1. 將裝置接下來連續產生的兩個代碼輸入 **MFA code 1 (MFA 代碼 1)** 和 **MFA code 2 (MFA 代碼 2)**。然後選擇 **Resync** (重新同步)。
**重要**  
產生代碼之後立即提交您的請求。如果您產生代碼，然後等太久而無法提交請求、請求會出現運作，但裝置保持未同步。會發生這種情況是因為定時式的一次性密碼 (TOTP) 在過了一小段時間後就會過期。

**登入前重新同步根使用者 MFA (主控台)**

1. 在 **Amazon Web Services Sign In With Authentication Device** (使用身分驗證裝置登入 Amazon Web Services) 頁面上，選擇 **Having problems with your authentication device? (您的身分驗證裝置登有問題？ )。Click here (請點選此處)**。
**注意**  
您可能會看到不同的文字，例如**使用 MFA 登入**和**對您的身分驗證裝置進行疑難排解**。不過，其功能是相同的。

1. 在 **Re-Sync With Our Servers (與我們的伺服器重新同步)** 區段中，將裝置接下來連續產生的兩個代碼輸入 **MFA code 1 (MFA 代碼 1)** 和 **MFA code 2 (MFA 代碼 2)**。然後選擇 **Re-sync authentication device (重新同步身分驗證裝置)**。

1. 如果必要，再次輸入密碼，然後選擇**登入**。然後，使用您的 MFA 裝置完成登入。

**登入後重新同步根使用者 MFA 裝置 (主控台)**

1. 選擇**根使用者**並輸入 AWS 帳戶 您的電子郵件地址，以帳戶擁有者身分登入 [IAM 主控台](https://console.aws.amazon.com/iam/)。在下一頁中，輸入您的密碼。
**注意**  
根使用者無法登入 **以 IAM 使用者身分登入** 頁面。如果您看到 **以 IAM 使用者身分登入** 頁面，請選擇頁面底部附近的 **使用根使用者電子郵件登入**。如需以根使用者身分登入的說明，請參閱*AWS 登入 《 使用者指南*》中的[以根使用者 AWS 管理主控台 身分登入](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-          root-user-sign-in-tutorial.html) 。

1. 在導覽列右側選擇您的帳戶名稱，然後選擇 **安全憑證** 。如有需要，選擇 **Continue to Security Credentials** (繼續至安全憑證)。  
![\[在導覽選單中的安全憑證\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/security-credentials-root.shared.console.png)

1. 展開頁面上的 **Multi-factor authentication (MFA)** (多重要素驗證 (MFA)) 區段。

1. 選擇裝置旁的選項按鈕，然後選取 **Resync** (重新同步)。

1. 在 **Resync MFA device** (重新同步 MFA 裝置) 對話方塊中，將裝置接下來連續產生的兩個代碼輸入 **MFA code 1** (MFA 代碼 1) 和 **MFA code 2** (MFA 代碼 2)。然後選擇 **Resync** (重新同步)。
**重要**  
產生代碼之後立即提交您的請求。如果在產生代碼後等待很長時間才提交請求，MFA 裝置會成功地與使用者建立關聯，但 MFA 裝置將不同步。會發生這種情況是因為定時式的一次性密碼 (TOTP) 在過了一小段時間後就會過期。

## 重新同步虛擬及硬體 MFA 裝置 (AWS CLI)
<a name="id_credentials_mfa_sync_cli"></a>

您可以從 AWS CLI重新同步虛擬及硬體 MFA 裝置。

**重新同步 IAM 使用者的虛擬或硬體 MFA 裝置 (AWS CLI)**  
在命令提示字元中，發出 [aws iam resync-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/resync-mfa-device.html) 命令：
+ 虛擬 MFA 裝置：將裝置的 Amazon Resource Name (ARN) 指定為序號。

  ```
  aws iam resync-mfa-device --user-name Richard --serial-number arn:aws:iam::123456789012:mfa/RichardsMFA --authentication-code1 123456 --authentication-code2 987654
  ```
+ 硬體 MFA 裝置：將硬體裝置的序號指定為序號。格式為廠商特定。例如，您可以從 Amazon 購買 gemalto 權杖。其序號通常是四個字母，後面接著四個數字。

  ```
  aws iam resync-mfa-device --user-name Richard --serial-number ABCD12345678 --authentication-code1 123456 --authentication-code2 987654
  ```

**重要**  
產生代碼之後立即提交您的請求。如果您產生代碼，然後因等太久而無法提交請求、請求會因代碼在不久後過期而失敗。

## 重新同步虛擬和硬體 MFA 裝置 (AWS API)
<a name="id_credentials_mfa_sync_api"></a>

IAM 有一個執行同步化的 API 呼叫。在這種情況下，建議您提供您的虛擬及硬體 MFA 裝置使用者許可，讓其存取此 API 呼叫。然後根據該 API 呼叫建置工具，讓使用者在需要時能隨時重新同步他們的裝置。

**重新同步 IAM 使用者 (AWS API) 的虛擬或硬體 MFA 裝置**
+ 傳送 [ResyncMFADevice](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResyncMFADevice.html) 請求。

# 停用 MFA 裝置
<a name="id_credentials_mfa_disable"></a>

如果您無法將多重要素驗證 (MFA) 裝置作為 IAM 使用者登入，請聯絡您的管理員尋求協助。

身為管理員，您可以停用另一個 IAM 使用者的裝置。這可讓使用者在不使用 MFA 的情況下登入。在更換 MFA 裝置或裝置暫時不可用時，您可以將此做為臨時解決方案。但是，我們建議您盡快為使用者啟用新的裝置。若要了解如何啟用新的 MFA 裝置，請參閱 [AWS IAM 中的多重要素驗證](id_credentials_mfa.md)。

**注意**  
如果您使用 API AWS CLI 或 從中刪除使用者 AWS 帳戶，則必須停用或刪除使用者的 MFA 裝置。您將此變更做為移除使用者的過程的一部分。如需有關移除使用者的詳細資訊，請參閱 [移除或停用 IAM 使用者](id_users_remove.md)。

**Topics**
+ [停用 MFA 裝置 (主控台)](#deactive-mfa-console)
+ [停用 MFA 裝置 (AWS CLI)](#deactivate-mfa-cli)
+ [停用 MFA 裝置 (AWS API)](#deactivate-mfa-api)

## 停用 MFA 裝置 (主控台)
<a name="deactive-mfa-console"></a><a name="deactivate-mfa-for-user"></a>

**為另一個 IAM 使用者停用 MFA 裝置 (主控台)**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇 **Users** (使用者)。

1. 若要為使用者停用 MFA 裝置，請選擇要移除其 MFA 的使用者的名稱。

1. 選擇 **Security credentials** (安全憑證) 索引標籤。

1. 在 **多重要素驗證 (MFA)** 下方選擇 MFA 裝置旁的選項按鈕、選擇 **移除**，然後選擇 **移除**。

   裝置已從中移除 AWS。在重新啟用請求並與 AWS 使用者或 建立關聯之前，它無法用來登入或驗證請求 AWS 帳戶根使用者。<a name="deactivate-mfa-for-root"></a>

**停用 AWS 帳戶根使用者 （主控台） 的 MFA 裝置**

1. 選擇**根使用者**並輸入 AWS 帳戶 您的電子郵件地址，以帳戶擁有者身分登入 [IAM 主控台](https://console.aws.amazon.com/iam/)。在下一頁中，輸入您的密碼。
**注意**  
根使用者無法登入 **以 IAM 使用者身分登入** 頁面。如果您看到 **以 IAM 使用者身分登入** 頁面，請選擇頁面底部附近的 **使用根使用者電子郵件登入**。如需以根使用者身分登入的說明，請參閱*AWS 登入 《 使用者指南*》中的[以根使用者 AWS 管理主控台 身分登入](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-          root-user-sign-in-tutorial.html) 。

1. 在導覽列右側選擇您的帳戶名稱，然後選擇 **安全憑證** 。如有需要，選擇 **Continue to Security Credentials** (繼續至安全憑證)。  
![\[在導覽選單中的安全憑證\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/security-credentials-root.shared.console.png)

1. 在 **Multi-factor authentication (MFA)** (多重要素驗證 (MFA)) 區段中，選擇您想要停用的 MFA 裝置旁的選項按鈕，然後選擇 **Remove** (移除)。

1. 選擇**移除**。

   已為 AWS 帳戶停用 MFA 裝置。檢查與您的 相關聯的電子郵件， AWS 帳戶 以取得來自 Amazon Web Services 的確認訊息。該電子郵件會通知您，Amazon Web Services 多重要素驗證 (MFA) 已停用。訊息來自於 `@amazon.com` 或 `@aws.amazon.com`。

**注意**  
當您透過 AWS 管理主控台 或在登入程序期間新增新的虛擬 MFA 裝置時， AWS 帳戶 將刪除 中未指派的虛擬 MFA 裝置。未指派的虛擬 MFA 裝置是指位於您帳戶中但帳戶根使用者或 IAM 使用者並未在登入程序中使用的裝置。將這些裝置刪除後，便可將新的虛擬 MFA 裝置新增至您的帳戶。刪除這些裝置後，您還可以重複使用裝置名稱。

## 停用 MFA 裝置 (AWS CLI)
<a name="deactivate-mfa-cli"></a>

**為 IAM 使用者停用 MFA 裝置 (AWS CLI)**
+ 執行此命令：[https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html)

## 停用 MFA 裝置 (AWS API)
<a name="deactivate-mfa-api"></a>

**停用 IAM 使用者的 MFA 裝置 (AWS API)**
+ 呼叫此操作：[https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html)

# 在 IAM 中復原受 MFA 保護的身分
<a name="id_credentials_mfa_lost-or-broken"></a>

如果您的[虛擬 MFA 裝置](id_credentials_mfa_enable_virtual.md)或[硬體 TOTP 字符](id_credentials_mfa_enable_physical.md)似乎正常運作，但您無法使用它來存取您的 AWS 資源，則它可能會與 不同步 AWS。如需同步虛擬 MFA 裝置或硬體 MFA 裝置的資訊，請參閱 [重新同步虛擬和硬體 MFA 裝置](id_credentials_mfa_sync.md)。[FIDO 安全性金鑰](id_credentials_mfa_enable_fido.md)不會失去同步。

如果 AWS 帳戶根使用者 的 [MFA 裝置](id_credentials_mfa.md)遺失、損壞或無法運作，您可以復原對帳戶的存取。IAM 使用者必須聯絡管理員以停用裝置。

**重要**  
我們建議您啟用多個 MFA 裝置。註冊多個 MFA 裝置有助於確保在裝置遺失或損壞時持續存取。您的 AWS 帳戶根使用者 和 IAM 使用者可以註冊最多八個任何類型的 MFA 裝置。

## 先決條件 – 使用另一個 MFA 裝置
<a name="mfa-lost-or-broken-prerequisites"></a>

如果您的[多重要素驗證 (MFA) 裝置](id_credentials_mfa.md)遺失、損毀或無法運作，您可以使用另一個註冊到相同根使用者或 IAM 使用者的 MFA 裝置登入。

**若要使用另一個 MFA 裝置登入**

1. 使用您的 AWS 帳戶 ID 或帳戶別名和密碼登入 [AWS 管理主控台](url-comsole-domain;iam)。

1. 在**需要其他驗證**頁面或**多重要素驗證**頁面上，選擇**嘗試其他 MFA 方法**。

1. 使用您選取的 MFA 裝置類型進行驗證。

1. 下一個步驟根據您是否成功使用替代 MFA 裝置登入而有所不同。
   + 如果您已成功登入，您可以[重新同步虛擬和硬體 MFA 裝置](id_credentials_mfa_sync.md)，這可能會解決此問題。如果您的 MFA 裝置遺失或損壞，您可以予以停用。如需停用任何 MFA 裝置類型的說明，請參閱 [停用 MFA 裝置](id_credentials_mfa_disable.md)。
   + 如果您無法使用 MFA 登入，請使用[復原根使用者 MFA 裝置](#root-mfa-lost-or-broken)或[復原 IAM 使用者 MFA 裝置](#iam-user-mfa-lost-or-broken)中的步驟來復原受 MFA 保護的身分。



## 復原根使用者 MFA 裝置
<a name="root-mfa-lost-or-broken"></a>

如果無法透過 MFA 登入，您可以使用其他身分驗證方法進行登入，即採用您帳戶中註冊的電子郵件和主要聯絡人電話號碼進行身分驗證。

確認在使用其他驗證要素以根使用者身分登入之前，您可以存取與您的帳戶關聯的電子郵件和主要聯絡人電話號碼。如果需要更新主要聯絡人電話號碼，請使用*管理員*存取權 (而非根使用者) 以 IAM 使用者的身分登入。如需了解有關更新帳戶聯絡人資訊的更多指示，請參閱 *AWS Billing 使用者指南*中的[編輯聯絡人資訊](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-contact-primary.html)。如果無權存取電子郵件和主要聯絡人電話號碼，則您必須聯絡 [AWS 支援](https://support.aws.amazon.com/#/contacts/aws-mfa-support)。

**重要**  
建議您保持電子郵件地址及聯絡人電話號碼與您的根使用者的關聯處於最新狀態，以成功地復原帳戶。如需詳細資訊，請參閱*《AWS 帳戶管理 參考指南》*中的[更新您 AWS 帳戶的主要連絡人](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-contact-primary.html)。

**使用身分驗證的替代因素做為 登入 AWS 帳戶根使用者**

1.  選擇**根使用者**並輸入 AWS 帳戶 您的電子郵件地址，以帳戶擁有者[AWS 管理主控台](https://console.aws.amazon.com/)身分登入 。在下一頁中，輸入您的密碼。

1. 在**需要其他驗證**頁面上，選取要用來進行驗證的 MFA 方法，然後選擇**下一步**。
**注意**  
您可能會看到替代文字，例如**使用 MFA 登入**、**對您的驗證裝置進行故障診斷**，或**對 MFA 進行故障診斷**，但功能是相同的。您不能使用其他驗證要素來驗證您的帳戶電子郵件地址和主要聯絡人電話號碼，請聯絡 [AWS 支援](https://support.aws.amazon.com/#/contacts/aws-mfa-support) 停用您的 MFA 裝置。

1. 視您使用的 MFA 類型而定，您會看到不同的頁面，但 **MFA 疑難排解**選項的功能相同。在**需要其他驗證**頁面或**多重要素驗證**頁面上，選擇 **MFA 疑難排解**。

1. 如果必要，再次輸入密碼，然後選擇 **Sign in (登入)**。

1. 在**使用其他驗證要素登入**區段中的**驗證裝置疑難排解**頁面上，選擇**使用其他要素登入**。

1. 在**使用其他驗證要素登入**頁面上，透過驗證電子郵件地址來驗證您的帳戶，然後選擇**傳送驗證電子郵件**。

1. 檢查與您的 相關聯的電子郵件 AWS 帳戶 是否有來自 Amazon Web Services (recover-mfa-no-reply@verify.signin.aws) 的訊息。請遵循電子郵件中的指示進行。

   如果您沒看到帳戶中有電子郵件，請檢查您的垃圾郵件資料夾，或返回瀏覽器，然後選擇 **Resend the email (重新傳送電子郵件)**。

1. 驗證電子郵件地址後，您可以繼續驗證您的帳戶。若要驗證主要聯絡人電話號碼，請選擇 **Call me now** (立即呼叫我)。

1. 接聽來自 的呼叫， AWS 並在出現提示時，在電話鍵盤上輸入網站上的 AWS 6 位數號碼。

   如果您沒有收到來自 的通話 AWS，請選擇**登入**以再次登入主控台並重新開始。或者，請參閱[遺失或無法使用的多重要素驗證 (MFA) 裝置](https://support.aws.amazon.com/#/contacts/aws-mfa-support)來聯絡支援中心以尋求協助。

1. 驗證您的電話號碼之後，您可以選擇 **Sign in to the console (登入主控台)** 登入您的帳戶。

1. 下一步取決於您使用的 MFA 類型：
   + 針對虛擬 MFA 裝置，請從您的裝置移除帳戶。然後，請前往 [AWS Security Credentials](https://console.aws.amazon.com/iam/home?#security_credential) (AWS 安全憑證) 頁面，並刪除舊 MFA 虛擬裝置實體，再建立新的實體。
   + 針對 FIDO 安全性金鑰，請前往 [AWS Security Credentials](https://console.aws.amazon.com/iam/home?#security_credential) (安全憑證) 頁面並停用舊 FIDO 安全性金鑰，然後再啟用新金鑰。
   + 針對硬體 TOTP 權杖，請聯絡第三方供應商，請其協助修復或更換裝置。您可以繼續使用其他身分驗證方法登入，直到收到新的裝置為止。擁有新的硬體 MFA 裝置之後，前往 [AWS 安全憑證](https://console.aws.amazon.com/iam/home?#security_credential)頁面，並刪除舊 MFA 裝置。
**注意**  
您無須將遺失或遭竊的 MFA 裝置更換成相同類型的裝置。例如，若您損壞了 FIDO 安全金鑰並訂購了新的金鑰，您可以使用虛擬 MFA 或硬體 TOTP 權杖，直到新的 FIDO 金鑰到達。

**重要**  
如果您的 MFA 裝置遺失或遭竊，請在登入並建立取代用 MFA 裝置後變更您的根使用者密碼。攻擊者可能竊取了驗證裝置，也可能擁有您目前的密碼。如需詳細資訊，請參閱[變更 的密碼 AWS 帳戶根使用者](root-user-password.md)。

## 復原 IAM 使用者 MFA 裝置
<a name="iam-user-mfa-lost-or-broken"></a>

如果您是無法使用 MFA 進行登入的 IAM 使用者，則無法自行復原 MFA 裝置。您必須聯絡管理員以停用裝置。然後，您就可以啟用新裝置。

**以 IAM 使用者身分取得 MFA 裝置的相關協助**

1. 請聯絡 AWS 管理員或為您提供 IAM 使用者使用者名稱和密碼的其他人員。管理員必須依 [停用 MFA 裝置](id_credentials_mfa_disable.md) 中所述停用 MFA 裝置，如此您才可以登入。

1. 下一步取決於您使用的 MFA 類型：
   + 針對虛擬 MFA 裝置，請從您的裝置移除帳戶。然後依 [在 中指派虛擬 MFA 裝置 AWS 管理主控台](id_credentials_mfa_enable_virtual.md) 所述啟用虛擬裝置。
   + 針對 FIDO 安全金鑰，請聯絡第三方供應商，請其協助更換裝置。當您收到新的 FIDO 安全性金鑰時，請遵循 [在 中指派通行金鑰或安全金鑰 AWS 管理主控台](id_credentials_mfa_enable_fido.md) 中所述的程序來啟用它。
   + 針對硬體 TOTP 權杖，請聯絡第三方供應商，請其協助修復或更換裝置。在擁有新的實體 MFA 裝置後，依 [在 中指派硬體 TOTP 字符 AWS 管理主控台](id_credentials_mfa_enable_physical.md) 所述啟用裝置。
**注意**  
您無須將遺失或遭竊的 MFA 裝置更換成相同類型的裝置。您最多可以有八台任意組合的 MFA 裝置。例如，若您損壞了 FIDO 安全金鑰並訂購了新的金鑰，您可以使用虛擬 MFA 或硬體 TOTP 權杖，直到新的 FIDO 金鑰到達。

1. 若您的 MFA 裝置遺失或遭竊，請同時變更您的 密碼，以防攻擊者竊取身分驗證裝置，同時還可能擁有您目前的密碼。如需詳細資訊，請參閱[管理 IAM 使用者的密碼](id_credentials_passwords_admin-change-user.md)

# 透過 MFA 實現安全的 API 存取
<a name="id_credentials_mfa_configure-api-require"></a>

利用 IAM 政策，可以指定允許使用者呼叫的 API 操作。您可以套用額外安全性，方法是先要求使用者透過多重要素驗證 (MFA) 進行身分驗證，然後再允許使用者執行特別敏感的動作。

例如，您可能擁有允許使用者執行 Amazon EC2 `RunInstances`、`DescribeInstances` 與 `StopInstances` 動作的政策。但您可能想要限制類似 的破壞性動作，`TerminateInstances`並確保使用者只有在使用 AWS MFA 裝置進行身分驗證時，才能執行該動作。

**Topics**
+ [概觀](#MFAProtectedAPI-overview)
+ [使用案例：跨帳戶委派的 MFA 防護](#MFAProtectedAPI-cross-account-delegation)
+ [使用案例：目前帳戶中 API 操作存取的 MFA 防護](#MFAProtectedAPI-user-mfa)
+ [使用案例：擁有以資源為基礎的政策之資源的 MFA 防護](#MFAProtectedAPI-resource-policies)

## 概觀
<a name="MFAProtectedAPI-overview"></a>

新增 MFA 防護到 API 操作將包括以下任務：

1. 管理員會為每個必須提出需要 AWS MFA 身分驗證之 API 請求的使用者設定 MFA 裝置。如需詳細資訊，請參閱[AWS IAM 中的多重要素驗證](id_credentials_mfa.md)。

1. 管理員會為使用者建立政策，其中包含檢查使用者是否使用 AWS MFA 裝置進行身分驗證的 `Condition` 元素。

1. 使用者呼叫其中一個支援 MFA 參數的 AWS STS API 操作：[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 或 [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html)。作為呼叫的一部分，使用者包含與其關聯的裝置的裝置識別碼。使用者也包含裝置產生之以時間為基礎的單次密碼 (TOTP)。在任一情況下，使用者都會取回稍後用來向 AWS發出其他請求的臨時安全憑證。
**注意**  
只有在服務支援臨時安全憑證時，才可使用該服務的 API 操作的 MFA 防護。如需這些服務的清單，請參閱[使用暫時安全憑證存取 AWS](https://docs.aws.amazon.com/STS/latest/UsingSTS/UsingTokens.html)。

如果授權失敗， 會 AWS 傳回存取遭拒錯誤訊息 （如同任何未經授權的存取）。使用受 MFA 保護的 API 政策時，如果使用者嘗試在沒有有效 MFA 身分驗證的情況下呼叫 API 操作， 會 AWS 拒絕存取政策中指定的 API 操作。如果 API 操作請求的時間戳記在政策中指定的允許範圍之外，也會拒絕該操作。使用者必須使用 MFA 代碼和裝置序號來請求新的臨時安全性憑證，並透過 MFA 重新進行身分驗證。

### 含有 MFA 條件的 IAM 政策
<a name="MFAProtectedAPI-policies"></a>

含有 MFA 條件的政策可連接到以下項目：
+ IAM 使用者或群組
+ 資源，例如 Amazon S3 儲存貯體、Amazon SQS 佇列或者 Amazon SNS 主題
+ 可由使用者擔任的 IAM 角色的信任政策

可使用政策中的 MFA 條件來檢查以下屬性：
+ 存在 - 如果只是驗證使用者是否已使用 MFA 進行身分驗證，請檢查 `aws:MultiFactorAuthPresent` 金鑰在 `Bool` 條件中是否為 `True`。只有在使用者使用短期憑證進行驗證時，索引鍵才會存在。長期憑證，例如存取金鑰，則不包括此鍵。
+ 持續時間 - 如果您只希望在 MFA 身分驗證後的指定時間內授予存取權限，請使用數值條件類型將 `aws:MultiFactorAuthAge` 索引鍵的有效期與某個值 (如 3600 秒) 進行比較。請注意，如果未使用 MFA，則 `aws:MultiFactorAuthAge` 索引鍵不會顯示。

以下範例顯示 IAM 角色的信任政策，該政策包含一個 MFA 條件，用於測試是否存在 MFA 身分驗證。使用此政策，來自 `Principal`元素中 AWS 帳戶 指定 (`ACCOUNT-B-ID`以有效的 AWS 帳戶 ID 取代） 的使用者可以擔任此政策所連接的角色。不過，如果使用者使用 MFA 進行身分驗證，這類的使用者只能擔任該角色。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Principal": {"AWS": "ACCOUNT-B-ID"},
    "Action": "sts:AssumeRole",
    "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
  }
}
```

------

如需有關 MFA 條件類型的詳細資訊，請參閱[AWS 全域條件內容索引鍵](reference_policies_condition-keys.md)、[數位條件運算子](reference_policies_elements_condition_operators.md#Conditions_Numeric) 與 [用於檢查條件索引鍵是否存在的條件運算子](reference_policies_elements_condition_operators.md#Conditions_Null)。

### 在 GetSessionToken 和 AssumeRole 之間選擇
<a name="scenarios"></a>

AWS STS 提供兩種 API 操作，可讓使用者傳遞 MFA 資訊： `GetSessionToken`和 `AssumeRole`。使用者呼叫以獲取臨時安全憑證的 API 操作取決於適用於以下哪個案例。

**針對以下案例使用 `GetSessionToken`：**
+ 呼叫 API 操作，以存取 AWS 帳戶 與發出請求的 IAM 使用者相同的 中的資源。請注意，*只有在*`GetSessionToken`憑證請求中包含 MFA 資訊時，請求中的臨時憑證才能存取 IAM 和 AWS STS API 操作。由於 `GetSessionToken` 傳回的臨時憑證包含 MFA 資訊，因此您可以檢查由該憑證發出的個別 API 操作中的 MFA。
+ 存取受到以資源為基礎且包含 MFA 條件的政策所保護的資源。

`GetSessionToken` 操作的目的是使用 MFA 驗證使用者的身分。您不能使用政策來控制驗證操作。

**針對以下案例使用 `AssumeRole`：**
+ 呼叫存取相同的或不同的 AWS 帳戶中的資源的 API 操作。API 呼叫可以包含任何 IAM 或 AWS STS API。請注意，要保護存取，您可以在使用者擔任角色時強制執行 MFA。由 `AssumeRole` 傳回的臨時憑證未將 MFA 資訊包含在上下文中，因此您無法檢查 MFA 的單一 API 操作。這就是您必須使用 `GetSessionToken` 限制對受到以資源為基礎之政策保護的資源的存取的原因。

**注意**  
AWS CloudTrail 當 IAM 使用者使用 MFA 登入時， 日誌將包含 MFA 資訊。如果 IAM 使用者擔任 IAM 角色，CloudTrail 也會將 `mfaAuthenticated: true` 記錄在使用該擔任角色執行的動作的 `sessionContext` 屬性中。不過，CloudTrail 記錄與使用擔任角色的憑證進行 API 呼叫時 IAM 所需的記錄是分開的。如需詳細資訊，請參閱 [CloudTrail userIdentity 元素](https://docs.aws.amazon.com//awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)。

本文件稍後將提供有關如何實施這些使用案例的詳細資訊。

### 有關受 MFA 保護的 API 存取的要點
<a name="MFAProtectedAPI-important-points"></a>

瞭解 API 操作的 MFA 防護有下列數個層面非常重要：
+ MFA 防護僅透過使用臨時安全性憑證供，而該憑證必須使用 `AssumeRole` 或 `GetSessionToken` 來取得。
+ 您無法搭配 AWS 帳戶根使用者 登入資料使用受 MFA 保護的 API 存取。
+ 無法搭配 U2F 安全性金鑰使用受 MFA 保護的 API 存取。
+ 聯合身分使用者無法獲指派 MFA 裝置以搭配 AWS 服務使用，因此無法存取 MFA 控制 AWS 的資源。(請查看下一要點。) 
+ 傳回暫時登入資料的其他 AWS STS API 操作不支援 MFA。對於 `AssumeRoleWithWebIdentity`和 `AssumeRoleWithSAML`，使用者由外部提供者進行驗證， AWS 無法判斷該提供者是否需要 MFA。對於 `GetFederationToken`，MFA 不一定要與特定使用者相關聯。
+ 同樣地，長期憑證 (IAM 使用者存取金鑰和根使用者存取金鑰) 無法用於受 MFA 保護的 API 存取，因為此類憑證不會過期。
+ 也可以在沒有 MFA 資訊的情況下呼叫 `AssumeRole` 與 `GetSessionToken`。在此情況下，呼叫者將取回臨時安全性憑證，但這些臨時憑證的工作階段資訊不會顯示使用 MFA 進行身分驗證的使用者。
+ 若要建立 API 操作的 MFA 防護，可將 MFA 條件加入到政策。政策必須包含 `aws:MultiFactorAuthPresent` 條件索引鍵，才能強制使用 MFA。對於跨帳戶委派，該角色的信任政策必須包含條件索引鍵。
+ 當您允許另一個 AWS 帳戶 存取您帳戶中的資源時，資源的安全性取決於受信任帳戶的組態 （另一個帳戶，而不是您的帳戶）。即使您要求多重要素驗證，也是如此。有權建立虛擬 MFA 裝置的可信帳戶中的任何身分都可以建構 MFA 宣告，以滿足角色信任政策的該部分。在允許另一個帳戶的成員存取需要多重要素驗證 AWS 的資源之前，您應該確保信任帳戶的擁有者遵循安全最佳實務。例如，信任的帳戶應該限制存取敏感 API 操作 (例如 MFA 裝置管理 API 操作) 至特定的信任身分。
+ 如果政策包含 MFA 條件，則在以下情況下將拒絕請求：使用者未進行 MFA 身分驗證或使用者提供了無效的 MFA 裝置識別碼或無效的 TOTP。

## 使用案例：跨帳戶委派的 MFA 防護
<a name="MFAProtectedAPI-cross-account-delegation"></a>

在此案例中，您想要將存取權委派給另一個帳戶中的 IAM 使用者，但前提是使用者已使用 AWS MFA 裝置進行身分驗證。如需有關跨帳戶委派的詳細資訊，請參閱 [角色術語和概念](id_roles.md#id_roles_terms-and-concepts)。

假設您有一個帳戶 A (擁有要存取的資源的信任帳戶)，其 IAM 使用者 Anaya 擁有管理員許可。她希望對帳戶 B (可信任的帳戶) 中的使用者 Richard 授予存取權，但希望確保 Richard 在擔任該角色之前已使用 MFA 進行身分驗證。

1. 在信任帳戶 A 中，Anaya 會建立名為 的 IAM 角色，`CrossAccountRole`並將角色信任政策中的委託人設定為帳戶 B 的帳戶 ID。信任政策會將 AWS STS 許可授予 `AssumeRole`動作。Anaya 也將 MFA 條件加入到信任政策中，如以下範例中所示。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Allow",
       "Principal": {"AWS": "ACCOUNT-B-ID"},
       "Action": "sts:AssumeRole",
       "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
     }
   }
   ```

------

1. Anaya 在該角色新增一個許可政策，以指定允許該角色執行的操作。具有 MFA 防護的角色許可政策與任何其他角色許可政策沒有差別。以下範例顯示 Anaya 新增到角色的政策；它允許假定的使用者在帳戶 A 中的 `Books` 資料表上執行任何 Amazon DynamoDB 動作。此政策也允許 `dynamodb:ListTables` 動作，而這是在主控台中執行動作的必要項目。
**注意**  
該許可政策不包含 MFA 條件。了解 MFA 身分驗證僅用於確定使用者是否可以擔任此角色這點非常重要。在使用者擔任此角色後，將不會進行進一步的 MFA 檢查。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "TableActions",
               "Effect": "Allow",
               "Action": "dynamodb:*",
               "Resource": "arn:aws:dynamodb:*:111122223333:table/Books"
           },
           {
               "Sid": "ListTables",
               "Effect": "Allow",
               "Action": "dynamodb:ListTables",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. 在受信任帳戶 B 中，管理員會確定 IAM 使用者 Richard 已設定 AWS MFA 裝置，而且他知道裝置的 ID。如果是硬體 MFA 裝置，則裝置 ID 是序號，或如果是虛擬 MFA 裝置，裝置是 ARN。

1. 在帳戶 B 中，管理員將以下政策連接到使用者 Richard (或該使用者所在的群組)，該政策允許使用者呼叫 `AssumeRole` 動作。資源被設定到 Anaya 在第 1 步中所建立的角色 ARN。注意，該政策不包含 MFA 條件。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sts:AssumeRole"
               ],
               "Resource": [
                   "arn:aws:iam::111122223333:role/CrossAccountRole"
               ]
           }
       ]
   }
   ```

------

1. 在帳戶 B 中，Richard (或 Richard 正在執行的應用程式) 呼叫 `AssumeRole`。API 呼叫包含要擔任角色的 ARN (`arn:aws:iam::ACCOUNT-A-ID:role/CrossAccountRole`)、MFA 裝置的 ID 和 Richard 從其裝置中取得的目前 TOTP。

   當 Richard 呼叫 時`AssumeRole`， AWS 判斷他是否擁有有效的登入資料，包括 MFA 的需求。如果是這種情況，Richard 將成功取得角色，並且可在使用角色的臨時憑證時對帳戶 A 中名為 `Books` 的表格執行任何 DynamoDB 動作。

   有關呼叫 `AssumeRole` 的程式之範例，請參閱 [使用 MFA 身分驗證呼叫 AssumeRole](id_credentials_mfa_sample-code.md#MFAProtectedAPI-example-assumerole)。

## 使用案例：目前帳戶中 API 操作存取的 MFA 防護
<a name="MFAProtectedAPI-user-mfa"></a>

在此案例中，您應該確保 中的使用者只有在使用 AWS MFA 裝置驗證使用者時 AWS 帳戶 ，才能存取敏感的 API 操作。

假設您擁有帳戶 A，其中包含一組需要使用 EC2 執行個體的開發人員。普通開發人員可以使用執行個體，但他們未獲得 `ec2:StopInstances` 或 `ec2:TerminateInstances` 操作的許可。您希望僅允許幾個可信任的使用者執行這些「破壞性」特權操作，因此您將 MFA 防護加入到允許這些敏感 Amazon EC2 動作的政策中。

在此使用案例中，使用者 Sofía 是可信任的使用者之一。使用者 Anaya 是帳戶 A 中的管理員。

1. Anaya 確保 Sofía 已設定 AWS MFA 裝置，且 Sofía 知道裝置的 ID。如果是硬體 MFA 裝置，則裝置 ID 是序號，或如果是虛擬 MFA 裝置，裝置是 ARN。

1. Anaya 建立一個名為 `EC2-Admins` 的群組並將使用者 Sofía 加入到該群組中。

1. Anaya 將以下政策連接到 `EC2-Admins` 群組。此政策授予使用者呼叫 Amazon EC2 `StopInstances` 與 `TerminateInstances` 動作的許可，但前提是該使用者已使用 MFA 進行身分驗證。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Action": [
         "ec2:StopInstances",
         "ec2:TerminateInstances"
       ],
       "Resource": ["*"],
       "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
     }]
   }
   ```

------

1. 
**注意**  
要讓此政策生效，使用者必須先登出，然後再次登入。

   如果使用者 Sofía 需要停止或終止 Amazon EC2 執行個體，她 (或執行中的應用程式) 會呼叫 `GetSessionToken`。此 API 操作傳遞 MFA 裝置的 ID，以及 Sofía 從其裝置取得的目前 TOTP。

1. 使用者 Sofía (或 Sofía 正在使用的應用程式) 使用由 `GetSessionToken` 提供的臨時憑證來呼叫 Amazon EC2 `StopInstances` 或者 `TerminateInstances` 動作。

   有關呼叫 `GetSessionToken` 的程式之範例，請參閱本文件後述的 [使用 MFA 身分驗證呼叫 GetSessionToken](id_credentials_mfa_sample-code.md#MFAProtectedAPI-example-getsessiontoken)。

## 使用案例：擁有以資源為基礎的政策之資源的 MFA 防護
<a name="MFAProtectedAPI-resource-policies"></a>

在此案例中，您是 S3 儲存貯體、SQS 佇列或 SNS 主題的擁有者。您想要確保來自任何存取資源 AWS 帳戶 的使用者都經過 AWS MFA 裝置驗證。

此使用案例介紹了一種提供跨帳戶 MFA 防護的方法，無需使用者先擔任角色。在此情況下，若符合三個條件，使用者便可存取資源。使用者必須通過 MFA 的身分驗證，能夠從 `GetSessionToken` 取得臨時安全性憑證，並且在資源政策所信任的帳戶中。

假設您在帳戶 A 中並建立一個 S3 儲存貯體。您想要將此儲存貯體的存取權授予位於數個不同 中的使用者 AWS 帳戶，但前提是這些使用者已使用 MFA 進行身分驗證。

在此方案中，使用者 Anaya 是帳戶 A 中的管理員。使用者 Nikhil 是帳戶 C 中的 IAM 使用者。

1. 在帳戶 A 中，Anaya 建立一個名為 `Account-A-bucket` 的儲存貯體。

1. Anaya 將儲存貯體政策加入到儲存貯體。該政策允許帳戶 A、帳戶 B 或帳戶 C 中的所有使用者執行儲存貯體中的 Amazon S3 `PutObject` 和 `DeleteObject` 動作。該政策包含 MFA 條件。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Principal": {"AWS": [
         "ACCOUNT-A-ID",
         "ACCOUNT-B-ID",
         "ACCOUNT-C-ID"
       ]},
       "Action": [
         "s3:PutObject",
         "s3:DeleteObject"
       ],
       "Resource": ["arn:aws:s3:::ACCOUNT-A-BUCKET-NAME/*"],
       "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
     }]
   }
   ```

------
**注意**  
Amazon S3 (僅) 針對*根*帳戶存取提供「MFA 刪除」功能。在您設定儲存貯體的版本控制狀態時，可啟用 Amazon S3 MFA Delete 功能。Amazon S3 MFA Delete 功能不適用於 IAM 使用者，在管理時獨立於 MFA 防護的 API 存取。即使 IAM 使用者有刪除儲存貯體的許可，但在啟用 Amazon S3 MFA Delete 功能時，也無法執行刪除。如需有關 Amazon S3 MFA Delete 的詳細資訊，請參閱 [MFA Delete](https://docs.aws.amazon.com/AmazonS3/latest/dev/MultiFactorAuthenticationDelete.html)。

1. 在帳戶 C 中，管理員確定使用者 Nikhil 以 AWS MFA 裝置設定，而且知道裝置的 ID。如果是硬體 MFA 裝置，則裝置 ID 是序號，或如果是虛擬 MFA 裝置，裝置是 ARN。

1. 在帳戶 C 中，Nikhil (或該使用者正在執行的應用程式) 呼叫 `GetSessionToken`。此呼叫包括 MFA 裝置的 ID 或 ARN 以及 Nikhil 從其裝置中取得的目前 TOTP。

1. Nikhil (或 Nikhil 正在使用的應用程式) 使用由 `GetSessionToken` 傳回的暫時憑證來呼叫 Amazon S3 `PutObject` 動作，上傳檔案到 `Account-A-bucket`。

   有關呼叫 `GetSessionToken` 的程式之範例，請參閱本文件後述的 [使用 MFA 身分驗證呼叫 GetSessionToken](id_credentials_mfa_sample-code.md#MFAProtectedAPI-example-getsessiontoken)。
**注意**  
`AssumeRole` 傳回的暫時憑證在此案例中則不會運作。雖然使用者可以提供 MFA 資訊以取得角色，`AssumeRole` 傳回的暫時憑證不會包含 MFA 資訊。有了這項資訊，才能符合政策中的 MFA 條件。

# 範本程式碼：使用多重要素驗證請求憑證
<a name="id_credentials_mfa_sample-code"></a>

以下範例顯示如何呼叫 `GetSessionToken` 和 `AssumeRole` 操作，並傳遞 MFA 驗證參數。呼叫 `GetSessionToken` 不需要許可，但您必須擁有一個可讓您呼叫 `AssumeRole` 的政策。傳回的憑證隨後用於列出帳戶中的所有 S3 儲存貯體。

## 使用 MFA 身分驗證呼叫 GetSessionToken
<a name="MFAProtectedAPI-example-getsessiontoken"></a>

以下範例說明如何呼叫 `GetSessionToken` 並傳遞 MFA 身分驗證資訊。然後，由 `GetSessionToken` 操作傳回的臨時安全憑證用於列出帳戶中的所有 S3 儲存貯體。

連接到執行此程式碼的使用者的政策 (或群組中的使用者)，會針對傳回的臨時憑證提供許可。對於此範本程式碼，政策必須授予使用者許可來請求 Amazon S3 `ListBuckets` 操作。

下列程式碼範例示範如何使用 `GetSessionToken`。

------
#### [ CLI ]

**AWS CLI**  
**為 IAM 身分取得一組短期憑證**  
下列 `get-session-token` 命令會為進行呼叫的 IAM 身分擷取一組短期憑證。產生的憑證可用於政策要求多重要素驗證 (MFA) 的請求。憑證會在產生後的 15 分鐘過期。  

```
aws sts get-session-token \
    --duration-seconds 900 \
    --serial-number "YourMFADeviceSerialNumber" \
    --token-code 123456
```
輸出：  

```
{
    "Credentials": {
        "AccessKeyId": "ASIAIOSFODNN7EXAMPLE",
        "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY",
        "SessionToken": "AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtpZ3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE",
        "Expiration": "2020-05-19T18:06:10+00:00"
    }
}
```
如需詳細資訊，請參閱《AWS IAM 使用者指南》**中的[請求臨時安全憑證](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getsessiontoken)。  
+  如需 API 詳細資訊，請參閱《AWS CLI 命令參考》**中的 [GetSessionToken](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/get-session-token.html)。

------
#### [ PowerShell ]

**Tools for PowerShell V4**  
**範例 1：傳回 `Amazon.RuntimeAWSCredentials` 執行個體，其中包含有效期為設定時間段的臨時憑證。從目前 Shell 預設值中推斷出用於請求臨時憑證的憑證。若要指定其他憑證，請使用 -ProfileName 或 -AccessKey/-SecretKey 參數。**  

```
Get-STSSessionToken
```
**輸出：**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**範例 2：傳回 `Amazon.RuntimeAWSCredentials` 執行個體，其中包含有效期為一小時的臨時憑證。從指定的設定檔中取得用於提出請求的憑證。**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile
```
**輸出：**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**範例 3：使用在設定檔 'myprofilename' 中指定其憑證的帳戶關聯的 MFA 裝置識別碼和裝置提供的值，傳回 `Amazon.RuntimeAWSCredentials` 執行個體，其中包含有效期為一小時的臨時憑證。**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile -SerialNumber YourMFADeviceSerialNumber -TokenCode 123456
```
**輸出：**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
+  如需 API 詳細資訊，請參閱《AWS Tools for PowerShell Cmdlet 參考 (V4)》**中的 [GetSessionToken](https://docs.aws.amazon.com/powershell/v4/reference)。

**Tools for PowerShell V5**  
**範例 1：傳回 `Amazon.RuntimeAWSCredentials` 執行個體，其中包含有效期為設定時間段的臨時憑證。從目前 Shell 預設值中推斷出用於請求臨時憑證的憑證。若要指定其他憑證，請使用 -ProfileName 或 -AccessKey/-SecretKey 參數。**  

```
Get-STSSessionToken
```
**輸出：**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**範例 2：傳回 `Amazon.RuntimeAWSCredentials` 執行個體，其中包含有效期為一小時的臨時憑證。從指定的設定檔中取得用於提出請求的憑證。**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile
```
**輸出：**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**範例 3：使用在設定檔 'myprofilename' 中指定其憑證的帳戶關聯的 MFA 裝置識別碼和裝置提供的值，傳回 `Amazon.RuntimeAWSCredentials` 執行個體，其中包含有效期為一小時的臨時憑證。**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile -SerialNumber YourMFADeviceSerialNumber -TokenCode 123456
```
**輸出：**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
+  如需 API 詳細資訊，請參閱《AWS Tools for PowerShell Cmdlet 參考 (V5)》**中的 [GetSessionToken](https://docs.aws.amazon.com/powershell/v5/reference)。

------
#### [ Python ]

**適用於 Python 的 SDK (Boto3)**  
 GitHub 上提供更多範例。尋找完整範例，並了解如何在 [AWS 程式碼範例儲存庫](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/sts#code-examples)中設定和執行。
透過傳遞 MFA 字符取得工作階段字符，並使用它列出該帳戶的 Amazon S3 儲存貯體。  

```
def list_buckets_with_session_token_with_mfa(mfa_serial_number, mfa_totp, sts_client):
    """
    Gets a session token with MFA credentials and uses the temporary session
    credentials to list Amazon S3 buckets.

    Requires an MFA device serial number and token.

    :param mfa_serial_number: The serial number of the MFA device. For a virtual MFA
                              device, this is an Amazon Resource Name (ARN).
    :param mfa_totp: A time-based, one-time password issued by the MFA device.
    :param sts_client: A Boto3 STS instance that has permission to assume the role.
    """
    if mfa_serial_number is not None:
        response = sts_client.get_session_token(
            SerialNumber=mfa_serial_number, TokenCode=mfa_totp
        )
    else:
        response = sts_client.get_session_token()
    temp_credentials = response["Credentials"]

    s3_resource = boto3.resource(
        "s3",
        aws_access_key_id=temp_credentials["AccessKeyId"],
        aws_secret_access_key=temp_credentials["SecretAccessKey"],
        aws_session_token=temp_credentials["SessionToken"],
    )

    print(f"Buckets for the account:")
    for bucket in s3_resource.buckets.all():
        print(bucket.name)
```
+  如需 API 詳細資訊，請參閱 *AWS SDK for Python (Boto3) API Reference* 中的 [GetSessionToken](https://docs.aws.amazon.com/goto/boto3/sts-2011-06-15/GetSessionToken)。

------

## 使用 MFA 身分驗證呼叫 AssumeRole
<a name="MFAProtectedAPI-example-assumerole"></a>

以下範例說明如何呼叫 `AssumeRole` 並傳遞 MFA 身分驗證資訊。然後，由 `AssumeRole` 傳回的臨時安全憑證用於列出帳戶中的所有 Amazon S3 儲存貯體。

如需有關此案例的詳細資訊，請參閱 [使用案例：跨帳戶委派的 MFA 防護](id_credentials_mfa_configure-api-require.md#MFAProtectedAPI-cross-account-delegation)。

下列程式碼範例示範如何使用 `AssumeRole`。

------
#### [ .NET ]

**適用於 .NET 的 SDK**  
 GitHub 上提供更多範例。尋找完整範例，並了解如何在 [AWS 程式碼範例儲存庫](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3/STS#code-examples)中設定和執行。

```
using System;
using System.Threading.Tasks;
using Amazon;
using Amazon.SecurityToken;
using Amazon.SecurityToken.Model;

namespace AssumeRoleExample
{
    class AssumeRole
    {
        /// <summary>
        /// This example shows how to use the AWS Security Token
        /// Service (AWS STS) to assume an IAM role.
        ///
        /// NOTE: It is important that the role that will be assumed has a
        /// trust relationship with the account that will assume the role.
        ///
        /// Before you run the example, you need to create the role you want to
        /// assume and have it trust the IAM account that will assume that role.
        ///
        /// See https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html
        /// for help in working with roles.
        /// </summary>

        // A region property may be used if the profile or credentials loaded do not specify a region,
        // or to use a specific region.
        private static readonly RegionEndpoint REGION = RegionEndpoint.USWest2;

        static async Task Main()
        {
            // Create the SecurityToken client and then display the identity of the
            // default user.
            var roleArnToAssume = "arn:aws:iam::123456789012:role/testAssumeRole";

            var client = new Amazon.SecurityToken.AmazonSecurityTokenServiceClient(REGION);

            // Get and display the information about the identity of the default user.
            var callerIdRequest = new GetCallerIdentityRequest();
            var caller = await client.GetCallerIdentityAsync(callerIdRequest);
            Console.WriteLine($"Original Caller: {caller.Arn}");

            // Create the request to use with the AssumeRoleAsync call.
            var assumeRoleReq = new AssumeRoleRequest()
            {
                DurationSeconds = 1600,
                RoleSessionName = "Session1",
                RoleArn = roleArnToAssume
            };

            var assumeRoleRes = await client.AssumeRoleAsync(assumeRoleReq);

            // Now create a new client based on the credentials of the caller assuming the role.
            var client2 = new AmazonSecurityTokenServiceClient(credentials: assumeRoleRes.Credentials, REGION);

            // Get and display information about the caller that has assumed the defined role.
            var caller2 = await client2.GetCallerIdentityAsync(callerIdRequest);
            Console.WriteLine($"AssumedRole Caller: {caller2.Arn}");
        }
    }
}
```
+  如需 API 詳細資訊，請參閱 *適用於 .NET 的 AWS SDK API Reference* 中的 [AssumeRole](https://docs.aws.amazon.com/goto/DotNetSDKV3/sts-2011-06-15/AssumeRole)。

------
#### [ Bash ]

**AWS CLI 使用 Bash 指令碼**  
 GitHub 上提供更多範例。尋找完整範例，並了解如何在 [AWS 程式碼範例儲存庫](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/aws-cli/bash-linux/iam#code-examples)中設定和執行。

```
###############################################################################
# function iecho
#
# This function enables the script to display the specified text only if
# the global variable $VERBOSE is set to true.
###############################################################################
function iecho() {
  if [[ $VERBOSE == true ]]; then
    echo "$@"
  fi
}

###############################################################################
# function errecho
#
# This function outputs everything sent to it to STDERR (standard error output).
###############################################################################
function errecho() {
  printf "%s\n" "$*" 1>&2
}

###############################################################################
# function sts_assume_role
#
# This function assumes a role in the AWS account and returns the temporary
#  credentials.
#
# Parameters:
#       -n role_session_name -- The name of the session.
#       -r role_arn -- The ARN of the role to assume.
#
# Returns:
#       [access_key_id, secret_access_key, session_token]
#     And:
#       0 - If successful.
#       1 - If an error occurred.
###############################################################################
function sts_assume_role() {
  local role_session_name role_arn response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function sts_assume_role"
    echo "Assumes a role in the AWS account and returns the temporary credentials:"
    echo "  -n role_session_name -- The name of the session."
    echo "  -r role_arn -- The ARN of the role to assume."
    echo ""
  }

  while getopts n:r:h option; do
    case "${option}" in
      n) role_session_name=${OPTARG} ;;
      r) role_arn=${OPTARG} ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done

  response=$(aws sts assume-role \
    --role-session-name "$role_session_name" \
    --role-arn "$role_arn" \
    --output text \
    --query "Credentials.[AccessKeyId, SecretAccessKey, SessionToken]")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports create-role operation failed.\n$response"
    return 1
  fi

  echo "$response"

  return 0
}
```
+  如需 API 詳細資訊，請參閱《AWS CLI 命令參考》**中的 [AssumeRole](https://docs.aws.amazon.com/goto/aws-cli/sts-2011-06-15/AssumeRole)。

------
#### [ C\$1\$1 ]

**適用於 C\$1\$1 的 SDK**  
 GitHub 上提供更多範例。尋找完整範例，並了解如何在 [AWS 程式碼範例儲存庫](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sts#code-examples)中設定和執行。

```
bool AwsDoc::STS::assumeRole(const Aws::String &roleArn,
                             const Aws::String &roleSessionName,
                             const Aws::String &externalId,
                             Aws::Auth::AWSCredentials &credentials,
                             const Aws::Client::ClientConfiguration &clientConfig) {
    Aws::STS::STSClient sts(clientConfig);
    Aws::STS::Model::AssumeRoleRequest sts_req;

    sts_req.SetRoleArn(roleArn);
    sts_req.SetRoleSessionName(roleSessionName);
    sts_req.SetExternalId(externalId);

    const Aws::STS::Model::AssumeRoleOutcome outcome = sts.AssumeRole(sts_req);

    if (!outcome.IsSuccess()) {
        std::cerr << "Error assuming IAM role. " <<
                  outcome.GetError().GetMessage() << std::endl;
    }
    else {
        std::cout << "Credentials successfully retrieved." << std::endl;
        const Aws::STS::Model::AssumeRoleResult result = outcome.GetResult();
        const Aws::STS::Model::Credentials &temp_credentials = result.GetCredentials();

        // Store temporary credentials in return argument.
        // Note: The credentials object returned by assumeRole differs
        // from the AWSCredentials object used in most situations.
        credentials.SetAWSAccessKeyId(temp_credentials.GetAccessKeyId());
        credentials.SetAWSSecretKey(temp_credentials.GetSecretAccessKey());
        credentials.SetSessionToken(temp_credentials.GetSessionToken());
    }

    return outcome.IsSuccess();
}
```
+  如需 API 詳細資訊，請參閱 *適用於 C\$1\$1 的 AWS SDK API Reference* 中的 [AssumeRole](https://docs.aws.amazon.com/goto/SdkForCpp/sts-2011-06-15/AssumeRole)。

------
#### [ CLI ]

**AWS CLI**  
**擔任角色**  
下列 `assume-role` 命令會為 IAM 角色 `s3-access-example` 擷取一組短期憑證。  

```
aws sts assume-role \
    --role-arn arn:aws:iam::123456789012:role/xaccounts3access \
    --role-session-name s3-access-example
```
輸出：  

```
{
    "AssumedRoleUser": {
        "AssumedRoleId": "AROA3XFRBF535PLBIFPI4:s3-access-example",
        "Arn": "arn:aws:sts::123456789012:assumed-role/xaccounts3access/s3-access-example"
    },
    "Credentials": {
        "SecretAccessKey": "9drTJvcXLB89EXAMPLELB8923FB892xMFI",
        "SessionToken": "AQoXdzELDDY//////////wEaoAK1wvxJY12r2IrDFT2IvAzTCn3zHoZ7YNtpiQLF0MqZye/qwjzP2iEXAMPLEbw/m3hsj8VBTkPORGvr9jM5sgP+w9IZWZnU+LWhmg+a5fDi2oTGUYcdg9uexQ4mtCHIHfi4citgqZTgco40Yqr4lIlo4V2b2Dyauk0eYFNebHtYlFVgAUj+7Indz3LU0aTWk1WKIjHmmMCIoTkyYp/k7kUG7moeEYKSitwQIi6Gjn+nyzM+PtoA3685ixzv0R7i5rjQi0YE0lf1oeie3bDiNHncmzosRM6SFiPzSvp6h/32xQuZsjcypmwsPSDtTPYcs0+YN/8BRi2/IcrxSpnWEXAMPLEXSDFTAQAM6Dl9zR0tXoybnlrZIwMLlMi1Kcgo5OytwU=",
        "Expiration": "2016-03-15T00:05:07Z",
        "AccessKeyId": "ASIAJEXAMPLEXEG2JICEA"
    }
}
```
該命令的輸出包含存取金鑰、私密金鑰以及可用來向 AWS進行驗證的工作階段字符。  
對於 AWS CLI 使用，您可以設定與角色相關聯的具名設定檔。當您使用設定檔時，CLI AWS 會呼叫 assume-role 並為您管理登入資料。如需詳細資訊，請參閱《[CLI 使用者指南》中的在 AWS CLI 中使用 IAM 角色](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html)。 *AWS *  
+  如需 API 詳細資訊，請參閱《AWS CLI 命令參考》**中的 [AssumeRole](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/assume-role.html)。

------
#### [ Java ]

**SDK for Java 2.x**  
 GitHub 上提供更多範例。尋找完整範例，並了解如何在 [AWS 程式碼範例儲存庫](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/sts#code-examples)中設定和執行。

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sts.StsClient;
import software.amazon.awssdk.services.sts.model.AssumeRoleRequest;
import software.amazon.awssdk.services.sts.model.StsException;
import software.amazon.awssdk.services.sts.model.AssumeRoleResponse;
import software.amazon.awssdk.services.sts.model.Credentials;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.Locale;

/**
 * To make this code example work, create a Role that you want to assume.
 * Then define a Trust Relationship in the AWS Console. You can use this as an
 * example:
 *
 * {
 * "Version":"2012-10-17",		 	 	 
 * "Statement": [
 * {
 * "Effect": "Allow",
 * "Principal": {
 * "AWS": "<Specify the ARN of your IAM user you are using in this code example>"
 * },
 * "Action": "sts:AssumeRole"
 * }
 * ]
 * }
 *
 * For more information, see "Editing the Trust Relationship for an Existing
 * Role" in the AWS Directory Service guide.
 *
 * Also, set up your development environment, including your credentials.
 *
 * For information, see this documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class AssumeRole {
    public static void main(String[] args) {
        final String usage = """

                Usage:
                    <roleArn> <roleSessionName>\s

                Where:
                    roleArn - The Amazon Resource Name (ARN) of the role to assume (for example, arn:aws:iam::000008047983:role/s3role).\s
                    roleSessionName - An identifier for the assumed role session (for example, mysession).\s
                """;

        if (args.length != 2) {
            System.out.println(usage);
            System.exit(1);
        }

        String roleArn = args[0];
        String roleSessionName = args[1];
        Region region = Region.US_EAST_1;
        StsClient stsClient = StsClient.builder()
                .region(region)
                .build();

        assumeGivenRole(stsClient, roleArn, roleSessionName);
        stsClient.close();
    }

    public static void assumeGivenRole(StsClient stsClient, String roleArn, String roleSessionName) {
        try {
            AssumeRoleRequest roleRequest = AssumeRoleRequest.builder()
                    .roleArn(roleArn)
                    .roleSessionName(roleSessionName)
                    .build();

            AssumeRoleResponse roleResponse = stsClient.assumeRole(roleRequest);
            Credentials myCreds = roleResponse.credentials();

            // Display the time when the temp creds expire.
            Instant exTime = myCreds.expiration();
            String tokenInfo = myCreds.sessionToken();

            // Convert the Instant to readable date.
            DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT)
                    .withLocale(Locale.US)
                    .withZone(ZoneId.systemDefault());

            formatter.format(exTime);
            System.out.println("The token " + tokenInfo + "  expires on " + exTime);

        } catch (StsException e) {
            System.err.println(e.getMessage());
            System.exit(1);
        }
    }
}
```
+  如需 API 詳細資訊，請參閱 *AWS SDK for Java 2.x API Reference* 中的 [AssumeRole](https://docs.aws.amazon.com/goto/SdkForJavaV2/sts-2011-06-15/AssumeRole)。

------
#### [ JavaScript ]

**SDK for JavaScript (v3)**  
 GitHub 上提供更多範例。尋找完整範例，並了解如何在 [AWS 程式碼範例儲存庫](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/sts#code-examples)中設定和執行。
建立用戶端。  

```
import { STSClient } from "@aws-sdk/client-sts";
// Set the AWS Region.
const REGION = "us-east-1";
// Create an AWS STS service client object.
export const client = new STSClient({ region: REGION });
```
擔任 IAM 角色。  

```
import { AssumeRoleCommand } from "@aws-sdk/client-sts";

import { client } from "../libs/client.js";

export const main = async () => {
  try {
    // Returns a set of temporary security credentials that you can use to
    // access Amazon Web Services resources that you might not normally
    // have access to.
    const command = new AssumeRoleCommand({
      // The Amazon Resource Name (ARN) of the role to assume.
      RoleArn: "ROLE_ARN",
      // An identifier for the assumed role session.
      RoleSessionName: "session1",
      // The duration, in seconds, of the role session. The value specified
      // can range from 900 seconds (15 minutes) up to the maximum session
      // duration set for the role.
      DurationSeconds: 900,
    });
    const response = await client.send(command);
    console.log(response);
  } catch (err) {
    console.error(err);
  }
};
```
+  如需 API 詳細資訊，請參閱 *適用於 JavaScript 的 AWS SDK API Reference* 中的 [AssumeRole](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sts/command/AssumeRoleCommand)。

**SDK for JavaScript (v2)**  
 GitHub 上提供更多範例。尋找完整範例，並了解如何在 [AWS 程式碼範例儲存庫](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascript/example_code/sts#code-examples)中設定和執行。

```
// Load the AWS SDK for Node.js
const AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

var roleToAssume = {
  RoleArn: "arn:aws:iam::123456789012:role/RoleName",
  RoleSessionName: "session1",
  DurationSeconds: 900,
};
var roleCreds;

// Create the STS service object
var sts = new AWS.STS({ apiVersion: "2011-06-15" });

//Assume Role
sts.assumeRole(roleToAssume, function (err, data) {
  if (err) console.log(err, err.stack);
  else {
    roleCreds = {
      accessKeyId: data.Credentials.AccessKeyId,
      secretAccessKey: data.Credentials.SecretAccessKey,
      sessionToken: data.Credentials.SessionToken,
    };
    stsGetCallerIdentity(roleCreds);
  }
});

//Get Arn of current identity
function stsGetCallerIdentity(creds) {
  var stsParams = { credentials: creds };
  // Create STS service object
  var sts = new AWS.STS(stsParams);

  sts.getCallerIdentity({}, function (err, data) {
    if (err) {
      console.log(err, err.stack);
    } else {
      console.log(data.Arn);
    }
  });
}
```
+  如需 API 詳細資訊，請參閱 *適用於 JavaScript 的 AWS SDK API Reference* 中的 [AssumeRole](https://docs.aws.amazon.com/goto/AWSJavaScriptSDK/sts-2011-06-15/AssumeRole)。

------
#### [ PowerShell ]

**Tools for PowerShell V4**  
**範例 1：傳回一組臨時登入資料 （存取金鑰、私密金鑰和工作階段字符），可用於存取請求使用者通常無法存取 AWS 的資源一小時。傳回的憑證擁有所擔任角色之存取政策和提供的政策所允許的許可 (您無法使用提供的政策來授予超過所擔任角色之存取政策所定義的許可)。**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -Policy "...JSON policy..." -DurationInSeconds 3600
```
**範例 2：傳回一組臨時憑證，有效期為一小時，這些憑證擁有所擔任角色之存取政策中定義的相同許可。**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600
```
**範例 3：傳回一組臨時憑證，提供序號，以及與用於執行 cmdlet 之使用者憑證相關聯的 MFA 產生的權杖。**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -SerialNumber "GAHT12345678" -TokenCode "123456"
```
**範例 4：傳回一組臨時憑證，這些臨時憑證擔任了客戶帳戶中定義的角色。對於第三方可以擔任的每個角色，客戶帳戶必須使用識別符來建立角色，必須在每次擔任角色時在 -ExternalId 參數中傳遞該識別符。**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -ExternalId "ABC123"
```
+  如需 API 詳細資訊，請參閱《AWS Tools for PowerShell Cmdlet 參考 (V4)》**中的 [AssumeRole](https://docs.aws.amazon.com/powershell/v4/reference)。

**Tools for PowerShell V5**  
**範例 1：傳回一組臨時登入資料 （存取金鑰、私密金鑰和工作階段字符），可用於存取請求使用者通常無法存取 AWS 的資源一小時。傳回的憑證擁有所擔任角色之存取政策和提供的政策所允許的許可 (您無法使用提供的政策來授予超過所擔任角色之存取政策所定義的許可)。**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -Policy "...JSON policy..." -DurationInSeconds 3600
```
**範例 2：傳回一組臨時憑證，有效期為一小時，這些憑證擁有所擔任角色之存取政策中定義的相同許可。**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600
```
**範例 3：傳回一組臨時憑證，提供序號，以及與用於執行 cmdlet 之使用者憑證相關聯的 MFA 產生的權杖。**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -SerialNumber "GAHT12345678" -TokenCode "123456"
```
**範例 4：傳回一組臨時憑證，這些臨時憑證擔任了客戶帳戶中定義的角色。對於第三方可以擔任的每個角色，客戶帳戶必須使用識別符來建立角色，必須在每次擔任角色時在 -ExternalId 參數中傳遞該識別符。**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -ExternalId "ABC123"
```
+  如需 API 詳細資訊，請參閱《AWS Tools for PowerShell Cmdlet 參考 (V5)》**中的 [AssumeRole](https://docs.aws.amazon.com/powershell/v5/reference)。

------
#### [ Python ]

**適用於 Python 的 SDK (Boto3)**  
 GitHub 上提供更多範例。尋找完整範例，並了解如何在 [AWS 程式碼範例儲存庫](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/sts#code-examples)中設定和執行。
擔任需要 MFA 字符的 IAM 角色，並使用暫時性憑證列出該帳戶的 Amazon S3 儲存貯體。  

```
def list_buckets_from_assumed_role_with_mfa(
    assume_role_arn, session_name, mfa_serial_number, mfa_totp, sts_client
):
    """
    Assumes a role from another account and uses the temporary credentials from
    that role to list the Amazon S3 buckets that are owned by the other account.
    Requires an MFA device serial number and token.

    The assumed role must grant permission to list the buckets in the other account.

    :param assume_role_arn: The Amazon Resource Name (ARN) of the role that
                            grants access to list the other account's buckets.
    :param session_name: The name of the STS session.
    :param mfa_serial_number: The serial number of the MFA device. For a virtual MFA
                              device, this is an ARN.
    :param mfa_totp: A time-based, one-time password issued by the MFA device.
    :param sts_client: A Boto3 STS instance that has permission to assume the role.
    """
    response = sts_client.assume_role(
        RoleArn=assume_role_arn,
        RoleSessionName=session_name,
        SerialNumber=mfa_serial_number,
        TokenCode=mfa_totp,
    )
    temp_credentials = response["Credentials"]
    print(f"Assumed role {assume_role_arn} and got temporary credentials.")

    s3_resource = boto3.resource(
        "s3",
        aws_access_key_id=temp_credentials["AccessKeyId"],
        aws_secret_access_key=temp_credentials["SecretAccessKey"],
        aws_session_token=temp_credentials["SessionToken"],
    )

    print(f"Listing buckets for the assumed role's account:")
    for bucket in s3_resource.buckets.all():
        print(bucket.name)
```
+  如需 API 詳細資訊，請參閱 *AWS SDK for Python (Boto3) API Reference* 中的 [AssumeRole](https://docs.aws.amazon.com/goto/boto3/sts-2011-06-15/AssumeRole)。

------
#### [ Ruby ]

**SDK for Ruby**  
 GitHub 上提供更多範例。尋找完整範例，並了解如何在 [AWS 程式碼範例儲存庫](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/ruby/example_code/iam#code-examples)中設定和執行。

```
  # Creates an AWS Security Token Service (AWS STS) client with specified credentials.
  # This is separated into a factory function so that it can be mocked for unit testing.
  #
  # @param key_id [String] The ID of the access key used by the STS client.
  # @param key_secret [String] The secret part of the access key used by the STS client.
  def create_sts_client(key_id, key_secret)
    Aws::STS::Client.new(access_key_id: key_id, secret_access_key: key_secret)
  end

  # Gets temporary credentials that can be used to assume a role.
  #
  # @param role_arn [String] The ARN of the role that is assumed when these credentials
  #                          are used.
  # @param sts_client [AWS::STS::Client] An AWS STS client.
  # @return [Aws::AssumeRoleCredentials] The credentials that can be used to assume the role.
  def assume_role(role_arn, sts_client)
    credentials = Aws::AssumeRoleCredentials.new(
      client: sts_client,
      role_arn: role_arn,
      role_session_name: 'create-use-assume-role-scenario'
    )
    @logger.info("Assumed role '#{role_arn}', got temporary credentials.")
    credentials
  end
```
+  如需 API 詳細資訊，請參閱 *適用於 Ruby 的 AWS SDK API Reference* 中的 [AssumeRole](https://docs.aws.amazon.com/goto/SdkForRubyV3/sts-2011-06-15/AssumeRole)。

------
#### [ Rust ]

**適用於 Rust 的 SDK**  
 GitHub 上提供更多範例。尋找完整範例，並了解如何在 [AWS 程式碼範例儲存庫](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1/examples/sts/#code-examples)中設定和執行。

```
async fn assume_role(config: &SdkConfig, role_name: String, session_name: Option<String>) {
    let provider = aws_config::sts::AssumeRoleProvider::builder(role_name)
        .session_name(session_name.unwrap_or("rust_sdk_example_session".into()))
        .configure(config)
        .build()
        .await;

    let local_config = aws_config::from_env()
        .credentials_provider(provider)
        .load()
        .await;
    let client = Client::new(&local_config);
    let req = client.get_caller_identity();
    let resp = req.send().await;
    match resp {
        Ok(e) => {
            println!("UserID :               {}", e.user_id().unwrap_or_default());
            println!("Account:               {}", e.account().unwrap_or_default());
            println!("Arn    :               {}", e.arn().unwrap_or_default());
        }
        Err(e) => println!("{:?}", e),
    }
}
```
+  如需 API 詳細資訊，請參閱《適用於 Rust 的AWS SDK API 參考》**中的 [AssumeRole](https://docs.rs/aws-sdk-sts/latest/aws_sdk_sts/client/struct.Client.html#method.assume_role)。

------
#### [ Swift ]

**適用於 Swift 的 SDK**  
 GitHub 上提供更多範例。尋找完整範例，並了解如何在 [AWS 程式碼範例儲存庫](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/swift/example_code/iam#code-examples)中設定和執行。

```
import AWSSTS

    public func assumeRole(role: IAMClientTypes.Role, sessionName: String)
        async throws -> STSClientTypes.Credentials
    {
        let input = AssumeRoleInput(
            roleArn: role.arn,
            roleSessionName: sessionName
        )
        do {
            let output = try await stsClient.assumeRole(input: input)

            guard let credentials = output.credentials else {
                throw ServiceHandlerError.authError
            }

            return credentials
        } catch {
            print("Error assuming role: ", dump(error))
            throw error
        }
    }
```
+  如需 API 詳細資訊，請參閱 *《適用於 Swift 的AWS SDK API 參考》*中的 [AssumeRole](https://sdk.amazonaws.com/swift/api/awssts/latest/documentation/awssts/stsclient/assumerole(input:))。

------

# IAM 使用者的服務特定憑證
<a name="id_credentials_service-specific-creds"></a>

服務特定的登入資料是專門為特定 AWS 服務設計的身分驗證機制。相較於標準登入資料，這些 AWS 登入資料提供簡化的身分驗證，並針對個別 AWS 服務的身分驗證需求量身打造。與可在多個 AWS 服務中使用的存取金鑰不同，服務特定的登入資料僅設計用於建立它們的服務。這種具有較強針對性的方法透過限制憑證的適用範圍來增強安全性。

服務特定憑證通常包含使用者名稱與密碼對，或根據特定服務的需求經格式化的專用 API 金鑰。在建立服務特定憑證時，它們預設為處於作用中狀態，並且可以立即使用。每個 IAM 使用者的每項受支援服務最多可以有兩組服務特定憑證。此限制可讓您在在需要時輪換至新集時維持一個作用中集。 AWS 目前支援下列服務的服務特定憑證：

## 何時使用服務特定的登入資料
<a name="id_credentials_service-specific-creds-usecase"></a>

服務特定的登入資料旨在與第三方程式庫、SDKs、工具或應用程式相容，這些應用程式本質上與 AWS 登入資料、 AWS 軟體SDKs或 AWS APIs 不相容。這類使用案例包括從自我託管的基礎設施或其他供應商託管 AWS 的服務遷移至 服務。

從頭開始，並盡可能使用臨時登入資料， AWS 例如 IAM 角色提供的臨時登入資料，以使用支援 AWS 臨時登入資料的 AWS SDK 或程式庫來驗證 AWS 服務。

## 輪換服務特定憑證
<a name="id_credentials_service-specific-creds-rotation"></a>

作為安全性最佳實務，請定期輪換服務特定憑證。若要在不中斷應用程式的情況下輪換憑證，請執行下列動作：

1. 為相同服務和 IAM 使用者再建立一組服務特定憑證

1. 更新所有應用程式以使用新憑證，並確認它們可正常運作

1. 將原始憑證的狀態變更為「非作用中」

1. 確認所有應用程式仍在正常運作

1. 確定不再需要非作用中的服務特定憑證後，將其刪除

## 監控服務特定憑證
<a name="id_credentials_service-specific-creds-monitoring"></a>

您可以使用 AWS CloudTrail 來監控帳戶中 AWS 服務特定登入資料的使用情況。若要檢視與服務特定憑證使用情況相關的 CloudTrail 事件，請檢閱 CloudTrail 日誌以取得使用憑證之服務的事件。如需詳細資訊，請參閱[使用 記錄 IAM 和 AWS STS API 呼叫 AWS CloudTrail](cloudtrail-integration.md)。

為提高安全性，請考慮設定 CloudWatch 警示，以便通知您特定的憑證使用模式，這些使用模式可能指示存在未經授權的存取或其他安全問題。如需詳細資訊，請參閱 *AWS CloudTrail User Guide* 中的 [Monitoring CloudTrail Log Files with Amazon CloudWatch Logs](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/monitor-cloudtrail-log-files-with-cloudwatch-logs.html)。

下列主題提供有關服務特定憑證的資訊。

**Topics**
+ [何時使用服務特定的登入資料](#id_credentials_service-specific-creds-usecase)
+ [輪換服務特定憑證](#id_credentials_service-specific-creds-rotation)
+ [監控服務特定憑證](#id_credentials_service-specific-creds-monitoring)
+ [Amazon Bedrock 和 Amazon CloudWatch Logs 的 API 金鑰](id_credentials_bedrock_cloudwatchlogs.md)
+ [將 IAM 與 Amazon Keyspaces (適用於 Apache Cassandra) 搭配使用](id_credentials_keyspaces.md)

# Amazon Bedrock 和 Amazon CloudWatch Logs 的 API 金鑰
<a name="id_credentials_bedrock_cloudwatchlogs"></a>

**注意**  
Amazon CloudWatch Logs API 金鑰目前可在預覽版中使用，並將於未來幾週正式推出。Amazon CloudWatch Logs API 金鑰與此頁面所述的 Amazon Bedrock 長期 API 金鑰非常相似。若要進一步了解 Amazon CloudWatch Logs 長期 API 金鑰，請參閱[使用 HLC 端點將日誌傳送至 Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_HLC_Endpoint.html)。

Amazon Bedrock 是一項全受管服務，提供來自領先 AI 公司和 Amazon 的基礎模型。您可以透過 AWS 管理主控台 和使用 AWS CLI或 AWS API 以程式設計方式存取 Amazon Bedrock。向 Amazon Bedrock 發出程式設計請求時，您可以使用[臨時安全憑證](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html)或 Amazon Bedrock API 金鑰進行身分驗證。Amazon Bedrock 支援兩種類型的 API 金鑰：
+ **短期 API 金鑰** – 短期 API 金鑰是使用 AWS Signature 第 4 版的預先簽章 URL。短期 API 金鑰與產生 API 金鑰的身分憑證具有相同的許可和過期時間，有效期最長為 12 小時或主控台工作階段的剩餘時間，以較短者為準。您可以使用 Amazon Bedrock 主控台、Python 套件 `aws-bedrock-token-generator` 和其他程式設計語言套件來產生短期 API 金鑰。如需詳細資訊，請參閱 *Amazon Bedrock User Guide* 中的 [Generate Amazon Bedrock API keys for easy access to the Amazon Bedrock API](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys.html)。
+ **長期 API 金鑰** – 長期 API 金鑰與 IAM 使用者相關聯，並使用 [IAM 服務特定的憑證](id_credentials_service-specific-creds.md)產生。這些憑證僅用於 Amazon Bedrock，並透過限制憑證範圍來增強安全性。您可以設定長期 API 金鑰的過期時間。您可以使用 IAM 或 Amazon Bedrock 主控台、CLI AWS 或 AWS API 來產生長期 API 金鑰。

IAM 使用者最多可以擁有兩個 Amazon Bedrock 長期 API 金鑰，方便您輪換安全金鑰。

當您產生長期 API 金鑰時， AWS 受管政策 [AmazonBedrockLimitedAccess](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonBedrockLimitedAccess) 會自動連接到 IAM 使用者。此政策授予對核心 Amazon Bedrock API 操作的存取權。如果需要額外的 Amazon Bedrock 存取權，您可以修改 IAM 使用者的許可。如需有關修改許可的資訊，請參閱[新增和移除 IAM 身分許可](access_policies_manage-attach-detach.md)。如需有關如何使用 Amazon Bedrock 金鑰的詳細資訊，請參閱 *Amazon Bedrock User Guide* 中的 [Use an Amazon Bedrock API key](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys-use.html)。

**注意**  
與短期 API 金鑰相比，長期 API 金鑰的安全風險更高。建議盡可能使用短期 API 金鑰或臨時安全憑證。如果使用長期 API 金鑰，建議定期輪換金鑰。

## 先決條件
<a name="id_credentials_bedrock_prerequisites"></a>

必須先符合下列先決條件，才能使用 IAM 主控台來產生 Amazon Bedrock 長期 API 金鑰：
+ 用於與長期 API 金鑰建立關聯的 IAM 使用者。如需有關建立 IAM 使用者的說明，請參閱[在 中建立 IAM 使用者 AWS 帳戶](id_users_create.md)。
+ 請確定您擁有下列 IAM 政策許可，以便管理 IAM 使用者的服務特定憑證。此範例政策授予建立、列出、更新、刪除和重設服務特定憑證的許可。將 Resource 元素中的 `username` 值取代為將為其產生 Amazon Bedrock API 金鑰的 IAM 使用者名稱：

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "ManageBedrockServiceSpecificCredentials",
              "Effect": "Allow",
              "Action": [
                  "iam:CreateServiceSpecificCredential",
                  "iam:ListServiceSpecificCredentials",
                  "iam:UpdateServiceSpecificCredential",
                  "iam:DeleteServiceSpecificCredential",
                  "iam:ResetServiceSpecificCredential"
              ],
              "Resource": "arn:aws:iam::*:user/username"
          }
      ]
  }
  ```

------

## 產生 Amazon Bedrock 長期 API 金鑰 (主控台)
<a name="id_credentials_bedrock_console_create"></a>

**產生 Amazon Bedrock 長期 API 金鑰 (主控台)**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在 IAM 主控台的導覽面板中，選擇**使用者**。

1. 選擇要為其產生 Amazon Bedrock 長期 API 金鑰的 IAM 使用者。

1. 選擇**安全憑證**索引標籤。

1. 在 **Amazon Bedrock 的 API 金鑰**區段中，選擇**產生 API 金鑰**。

1. 對於 **API 金鑰過期**，請執行下列其中一項操作：
   + 選擇 API 金鑰的有效期：**1**、**5**、**30**、**90** 或 **365** 天。
   + 選擇**自訂持續時間**以指定自訂 API 金鑰過期日期。
   + 選取**永不過期** (不建議)

1. 選擇**產生 API 金鑰**。

1. 複製或下載您的 API 金鑰。這是您唯一可以檢視 API 金鑰值的機會。
**重要**  
請妥善儲存您的 API 金鑰。關閉此對話方塊之後，您將無法再次擷取此 API 金鑰。如果遺失或忘記私密存取金鑰，將無法擷取它。請改為建立新的存取金鑰，並停用舊金鑰。

## 產生 Amazon Bedrock 長期 API 金鑰 (AWS CLI)
<a name="id_credentials_bedrock_cli_create"></a>

若要使用 產生 Amazon Bedrock 長期 API 金鑰 AWS CLI，請使用下列步驟：

1. 使用 [create-user](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-user.html) 命令建立將與 Amazon Bedrock 搭配使用的 IAM 使用者：

   ```
   aws iam create-user \
       --user-name BedrockAPIKey_1
   ```

1. 使用 [ attach-user-policy ](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-user-policy.html)命令將 AWS 受管政策`AmazonBedrockLimitedAccess`連接至 Amazon Bedrock IAM 使用者：

   ```
   aws iam attach-user-policy --user-name BedrockAPIKey_1 \
       --policy-arn arn:aws:iam::aws:policy/AmazonBedrockLimitedAccess
   ```

1. 使用 [create-service-specific-credential](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-service-specific-credential.html) 命令產生 Amazon Bedrock 長期 API 金鑰。對於憑證存留期，您可以指定 1-36600 天之間的任意值。如果未指定憑證存留期，則 API 金鑰將不會過期。

   若要產生有效期為 30 天的長期 API 金鑰：

   ```
   aws iam create-service-specific-credential \
       --user-name BedrockAPIKey_1 \
       --service-name bedrock.amazonaws.com \
       --credential-age-days 30
   ```

回應中傳回的 `ServiceApiKeyValue` 便是您的長期 Amazon Bedrock API 金鑰。請妥善儲存 `ServiceApiKeyValue` 值，因為您之後將無法再擷取它。

### 列出長期 API 金鑰 (AWS CLI)
<a name="id_credentials_bedrock_cli_list"></a>

若要列出特定使用者的 Amazon Bedrock 長期 API 金鑰中繼資料，請使用 [list-service-specific-credentials](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-service-specific-credentials.html) 命令與 `--user-name` 參數：

```
aws iam list-service-specific-credentials \
    --service-name bedrock.amazonaws.com \
    --user-name BedrockAPIKey_1
```

若要列出帳戶中的所有 Amazon Bedrock 長期 API 金鑰中繼資料，請使用 [list-service-specific-credentials](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-service-specific-credentials.html) 命令與 `--all-users` 參數：

```
aws iam list-service-specific-credentials \
    --service-name bedrock.amazonaws.com \
    --all-users
```

### 更新長期 API 金鑰的狀態 (AWS CLI)
<a name="id_credentials_bedrock_cli_update"></a>

若要更新 Amazon Bedrock 長期 API 金鑰的狀態，請使用 [update-service-specific-credential](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/update-service-specific-credential.html) 命令：

```
aws iam update-service-specific-credential \
    --user-name "BedrockAPIKey_1" \
    --service-specific-credential-id "ACCA1234EXAMPLE1234" \
    --status Inactive|Active
```

## 產生 Amazon Bedrock (AWS API) 的長期 API 金鑰
<a name="id_credentials_bedrock_api"></a>

您可以使用下列 API 操作來產生和管理 Amazon Bedrock 長期 API 金鑰：
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServiceSpecificCredentials.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServiceSpecificCredentials.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServiceSpecificCredential.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceSpecificCredential.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html) 

# 將 IAM 與 Amazon Keyspaces (適用於 Apache Cassandra) 搭配使用
<a name="id_credentials_keyspaces"></a>

Amazon Keyspaces (適用於 Apache Cassandra) 是一種可擴展、高可用性且受管的 Apache Cassandra 相容資料庫服務。您可以透過 AWS 管理主控台或以程式設計方式存取 Amazon Keyspaces。若要使用服務特定憑證以程式設計方式存取 Amazon Keyspaces，您可以使用 `cqlsh` 或開放原始碼 Cassandra 驅動程式。*服務特定的憑證*包括使用者名稱和密碼，例如 Cassandra 用於身分驗證和存取管理的使用者名稱和密碼。對於每位使用者，每個支援的服務最多可以有兩組服務特定憑證。

若要使用存取金鑰以程式設計方式 AWS 存取 Amazon Keyspaces，您可以使用 AWS SDK、 AWS Command Line Interface (AWS CLI) 或開放原始碼 Cassandra 驅動程式搭配 SigV4 外掛程式。若要進一步了解，請參閱《[Amazon Keyspaces （適用於 Apache Cassandra) 開發人員指南》中的建立和設定 Amazon Keyspaces 的 AWS 登入](https://docs.aws.amazon.com//keyspaces/latest/devguide/access.credentials.html)資料。 **

**注意**  
如果您打算只透過主控台與 Amazon Keyspaces 互動，則不需要產生服務特定的憑證。如需詳細資訊，請參閱《Amazon Keyspaces (適用於 Apache Cassandra) 開發人員指南》中的[使用主控台存取 Amazon Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/console_keyspaces.html)。

如需有關存取 Amazon Keyspaces 所需許可的詳細資訊，請參閱 *Amazon Keyspaces (適用於 Apache Cassandra) 開發人員指南*中的 [Amazon Keyspaces (適用於 Apache Cassandra) 以身分為基礎的政策範例](https://docs.aws.amazon.com/keyspaces/latest/devguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-console)。

## 產生 Amazon Keyspaces 憑證 (主控台)
<a name="keyspaces_credentials_console"></a>

您可以使用 AWS 管理主控台 為您的 IAM 使用者產生 Amazon Keyspaces （適用於 Apache Cassandra) 憑證。

**產生 Amazon Keyspaces 服務特定的憑證 (主控台)**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇 **Users** (使用者)，然後選擇需要憑證的使用者名稱。

1. 在 **Security Credentials** (安全憑證) 索引標籤的 **Credentials for Amazon Keyspaces (for Apache Cassandra)** (Amazon Keyspaces (適用於 Apache Cassandra) 憑證) 上，選擇 **Generate credentials **(產生憑證)。

1. 您的服務特定憑證現在可供使用。這是唯一可以檢視或下載密碼的機會。您稍後無法進行復原。不過，您可以隨時重設密碼。請將使用者和密碼儲存在安全的位置，因為稍後需要用到。

## 產生 Amazon Keyspaces 憑證 (AWS CLI)
<a name="keyspaces_credentials_cli"></a>

您可以使用 AWS CLI 為您的 IAM 使用者產生 Amazon Keyspaces （適用於 Apache Cassandra) 憑證。

**產生 Amazon Keyspaces 服務特定的憑證 (AWS CLI)**
+ 使用下列命令：
  + [aws iam create-service-specific-credential](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-specific-credential.html)

## 產生 Amazon Keyspaces 登入資料 (AWS API)
<a name="keyspaces_credentials_api"></a>

您可以使用 AWS API 為您的 IAM 使用者產生 Amazon Keyspaces （適用於 Apache Cassandra) 憑證。

**產生 Amazon Keyspaces 服務特定登入資料 (AWS API)**
+ 請完成下列操作：
  + [CreateServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html) 

# 尋找未使用的 AWS 登入資料
<a name="id_credentials_finding-unused"></a>

若要提高 的安全性 AWS 帳戶，請移除不需要的 IAM 使用者登入資料 （即密碼和存取金鑰）。例如，當使用者離開您的組織或不再需要 AWS 存取時，請尋找他們正在使用的登入資料，並確保他們不再運作。在理想情況下，如果不再需要可刪除憑證。有需要時，您隨時可以在日後重新建立它們。至少您應變更密碼或停用存取金鑰，讓前任持有者無法再繼續存取。

當然，*未使用*的定義可能有所不同，通常表示在指定期間內未使用的憑證。

## 尋找未使用的密碼
<a name="finding-unused-passwords"></a>

您可以使用 AWS 管理主控台 檢視使用者的密碼使用資訊。如果您有大量的使用者，您可以使用主控台來下載憑證報告與有關每位使用者上次使用他們的主控台密碼的資訊。您也可以從 AWS CLI 或 IAM API 存取資訊。

**尋找未使用的密碼 (主控台)**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇 **Users (使用者)**。

1. 如果必要，請將 **Console last sign-in (主控台上次登入)** 欄位新增到使用者表格：

   1. 在最右側的表格上方，選擇設定圖示 (![\[Settings icon\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/console-settings-icon.console.png))。

   1. 在 **選取可見欄** 中選取 **主控台上次登入**。

   1. 選擇 **確認** 返回使用者清單。

1. **主控台上次登入**資料欄會顯示使用者上次 AWS 透過主控台登入 的日期。您可以使用此資訊來尋找其密碼超過指定期間都沒有登入的使用者。該欄位對於其密碼從未登入的使用者顯示 **Never (永不)**。**None (無)** 指出使用者無密碼。最近未使用的密碼可能就是待移除的項目。
**重要**  
由於服務問題，上次使用密碼的資料不包含從 2018 年 5 月 3 日 22:50 (太平洋日光時間) 到 2018 年 5 月 23 日 14:08 (太平洋日光時間) 使用的密碼。這會影響顯示於 IAM 主控台中的[前次登入](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_finding-unused.html)日期，以及在 [IAM 憑證報告](https://docs.aws.amazon.com/IAM/latest/UserGuide/SupportedTypes.xmlid_credentials_getting-report.html)中的最後使用密碼日期，並由 [GetUser API 操作](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html)傳回。如果使用者在受影響的時間登入，傳回的上次使用密碼的日期會是使用者最後一次在 2018 年 5 月 3 日之前登入的日期。對於在 2018 年 5 月 23 日 14:08 (太平洋日光時間) 之後登入的使用者，傳回的上次使用密碼日期會是準確的。  
如果您使用密碼上次使用的資訊來識別未使用的登入資料以供刪除，例如刪除 AWS 過去 90 天內未登入 的使用者，建議您調整評估時段以包含 2018 年 5 月 23 日之後的日期。或者，如果您的使用者使用存取金鑰以 AWS 程式設計方式存取 ，您可以參考存取金鑰上次使用的資訊，因為它在所有日期都是準確的。

**透過下載憑證報告尋找未使用的密碼 (主控台)**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇 **Credential report (憑證報告)**。

1. 選擇 **Download Report (下載報告)** 以下載名稱為 `status_reports_<date>T<time>.csv` 的逗號分隔值 (CSV) 檔案。第五個欄位包含 `password_last_used` 欄與日期或以下其中一項：
   + **N/A** (無) – 完全沒有指派密碼的使用者。
   + **no\$1information** (無資訊) – 自從 IAM 在 2014 年 10 月 20 日開始追蹤密碼使用期限，未使用他們密碼的使用者。

**若要尋找未使用的密碼 (AWS CLI)**  
執行以下命令來尋找未使用的密碼：
+ `[aws iam list-users](https://docs.aws.amazon.com/cli/latest/reference/iam/list-users.html)` 傳回使用者清單，每個都有一個 `PasswordLastUsed` 值。如果缺少值，則表示使用者沒有密碼或者自從 IAM 在 2014 年 10 月 20 日開始追蹤密碼使用期限，未使用密碼。

**尋找未使用的密碼 (AWS API)**  
呼叫以下操作來尋找未使用的密碼：
+  ` [ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)` 傳回使用者集合，每個選項都有 `<PasswordLastUsed>` 值。如果缺少值，則表示使用者沒有密碼或者自從 IAM 在 2014 年 10 月 20 日開始追蹤密碼使用期限，未使用密碼。

如需關於下載憑證報告的命令的資訊，請參閱[取得憑證報告 (AWS CLI)](id_credentials_getting-report.md#getting-credential-reports-cliapi)。

## 尋找未使用的存取金鑰
<a name="finding-unused-access-keys"></a>

您可以使用 AWS 管理主控台 來檢視使用者的存取金鑰用量資訊。如果您有大量的使用者，您可以使用主控台來下載憑證報告，以尋找每位使用者上次使用他們的存取金鑰的時間。您也可以從 AWS CLI 或 IAM API 存取資訊。

**尋找未使用的存取金鑰 (主控台)**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇 **Users (使用者)**。

1. 如有必要，請將 **Access key last used** (上次使用的存取金鑰) 欄位新增到使用者表格：

   1. 在最右側的表格上方，選擇設定圖示 (![\[Settings icon\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/console-settings-icon.console.png))。

   1. 在 **選取可見欄** 中選取 **存取金鑰上次使用時間**。

   1. 選擇 **確認** 返回使用者清單。

1. **上次使用的存取金鑰**欄會顯示自上次 AWS 以程式設計方式存取使用者以來的天數。您可以使用此資訊來尋找存取金鑰超過指定期間都沒有使用的使用者。該欄會向沒有存取金鑰的使用者顯示 **–**。最近未使用的存取金鑰可能就是待移除的項目。

**透過下載憑證報告尋找未使用的存取金鑰 (主控台)**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇 **Credential Report (憑證報告)**。

1. 選擇 **Download Report (下載報告)** 以下載名稱為 `status_reports_<date>T<time>.csv` 的逗號分隔值 (CSV) 檔案。欄位 11 到 13 包含存取金鑰 1 上次使用的日期、區域和服務資訊。欄位 16 到 18 包含存取金鑰 2 的相同資訊。如果使用者沒有存取金鑰，或者使用者自從 IAM 在 2015 年 4 月 22 日開始追蹤存取金鑰使用期限均未使用存取金鑰，該值為 **N/A** (無)。

**若要尋找未使用的存取金鑰 (AWS CLI)**  
執行以下命令來尋找未使用的存取金鑰：
+ `[aws iam list-access-keys](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)` 傳回有關使用者的存取金鑰的資訊，包括 `AccessKeyID`。
+ `[aws iam get-access-key-last-used](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html)` 需要存取金鑰 ID 並會傳回輸出，其中包含上次使用存取金鑰的 `LastUsedDate`、`Region`，以及上次所請求服務的 `ServiceName`。如果缺少 `LastUsedDate`，則表示自從 IAM 在 2015 年 4 月 22 日開始追蹤存取金鑰使用期限均未使用存取金鑰。

**尋找未使用的存取金鑰 (AWS API)**  
呼叫以下操作來尋找未使用的存取金鑰：
+ `[ListAccessKeys](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html)` 傳回與指定的使用者關聯之存取金鑰的 `AccessKeyID` 值清單。
+ `[GetAccessKeyLastUsed](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html)` 需要存取金鑰 ID 並會傳回值集合。包含有是上次使用的存取金鑰的 `LastUsedDate`、`Region`，以及上次所請求服務的 `ServiceName`。如果缺少值，則表示使用者沒有存取金鑰，或者自從 IAM 在 2015 年 4 月 22 日開始追蹤存取金鑰使用期限均未使用存取金鑰。

如需關於下載憑證報告的命令的資訊，請參閱[取得憑證報告 (AWS CLI)](id_credentials_getting-report.md#getting-credential-reports-cliapi)。

# 為您的 產生登入資料報告 AWS 帳戶
<a name="id_credentials_getting-report"></a>

您可以產生並下載*憑證報告*，其中會列出帳戶中的所有使用者，及其各種憑證的狀態，包括密碼、存取金鑰和 MFA 裝置。您可以從 AWS 管理主控台、 [AWS SDKs](https://aws.amazon.com/tools)和[命令列工具](https://aws.amazon.com/tools/#Command_Line_Tools)或 IAM API 取得登入資料報告。

**注意**  
IAM 登入資料報告僅包含下列 IAM 受管登入資料：密碼、每個使用者的前兩個存取金鑰、MFA 裝置和 X.509 簽署憑證。報告不包含服務特定的登入資料 （例如 CodeCommit 密碼、Amazon Bedrock 長期 API 金鑰或 Amazon CloudWatch Logs 長期 API 金鑰） 或任何其他超過前兩個的使用者存取金鑰。如需完整的登入資料可見性，請使用 [ListServiceSpecificCredentials](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServiceSpecificCredentials.html) 和 [ListAccessKeys](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html) APIs。

您可以使用憑證報告協助您進行稽核和合規性工作。您可以使用報告來稽核憑證生命週期要求的效果，如密碼和存取金鑰更新。您可以向外部稽核員提供報告，或向稽核員授予許可，以便該人員直接下載報告。

您可以依照每四小時一次的頻率來產生憑證報告。當您請求報告時，IAM 會先檢查是否已在過去四小時內 AWS 帳戶 產生 的報告。若是如此，便會下載最新的報告。如果帳戶的最新報告是四小時前產生的，或者如果帳戶無先前報告，則 IAM 會產生並下載新報告。

**Topics**
+ [必要許可](#id_credentials_required_permissions)
+ [了解報告格式](#id_credentials_understanding_the_report_format)
+ [取得憑證報告 (主控台)](#getting-credential-reports-console)
+ [取得憑證報告 (AWS CLI)](#getting-credential-reports-cliapi)
+ [取得登入資料報告 (AWS API)](#getting-credential-reports-api)

## 必要許可
<a name="id_credentials_required_permissions"></a>

建立和下載報告必須要有以下許可：
+ 建立憑證報告：`iam:GenerateCredentialReport`
+ 下載報告：`iam:GetCredentialReport`

## 了解報告格式
<a name="id_credentials_understanding_the_report_format"></a>

憑證報告採取逗號分隔值 (CSV) 檔案為格式。您可以使用常用試算表軟體打開 CSV 檔以執行分析，也可以建構應用程式來以程式設計方式使用 CSV 檔並執行自訂分析。

CSV 檔案內含下列欄位：

**使用者**  
易讀的使用者名稱。

**arn**  
使用者的 Amazon Resource Name (ARN)。如需有關 ARN 的詳細資訊，請參閱 [IAM ARN](reference_identifiers.md#identifiers-arns)。

**user\$1creation\$1time**  
使用者建立的日期和時間，採用 [ISO 8601 日期時間格式](https://en.wikipedia.org/wiki/ISO_8601)。

**password\$1enabled**  
當使用者有密碼時，此值為 `TRUE`，否則為 `FALSE`。對於作為組織的一部分建立的新成員帳戶，此值為 `FALSE`，因為這些帳戶預設不具備根使用者憑證。

**password\$1last\$1used**  
上次使用 AWS 帳戶根使用者 或 使用者密碼登入 AWS 網站的日期和時間，採用 [ISO 8601 日期時間格式](http://www.iso.org/iso/iso8601)。擷取使用者上次登入時間 AWS 的網站為 AWS 管理主控台、 AWS 開發論壇和 AWS Marketplace。如果密碼在 5 分鐘的時間範圍內多次使用，則僅在此欄位中記錄此期間內的第一次使用。  
+ 在以下情況中，此欄位的值為 `no_information`：
  + 從未使用使用者密碼。
  + 沒有與密碼關聯的登入資料，例如，在 IAM 於 2014 年 10 月 20 日開始追蹤此資訊後，使用者密碼未曾使用。
+ 當使用者沒有密碼時，此欄位中的值是 `N/A` (不適用)。

**重要**  
由於服務問題，上次使用密碼的資料不包含從 2018 年 5 月 3 日 22:50 (太平洋日光時間) 到 2018 年 5 月 23 日 14:08 (太平洋日光時間) 使用的密碼。這會影響顯示於 IAM 主控台中的[前次登入](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_finding-unused.html)日期，以及在 [IAM 憑證報告](https://docs.aws.amazon.com/IAM/latest/UserGuide/SupportedTypes.xmlid_credentials_getting-report.html)中的最後使用密碼日期，並由 [GetUser API 操作](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html)傳回。如果使用者在受影響的時間登入，傳回的上次使用密碼的日期會是使用者最後一次在 2018 年 5 月 3 日之前登入的日期。對於在 2018 年 5 月 23 日 14:08 (太平洋日光時間) 之後登入的使用者，傳回的上次使用密碼日期會是準確的。  
如果您使用密碼上次使用的資訊來識別未使用的登入資料以供刪除，例如刪除 AWS 過去 90 天內未登入 的使用者，建議您調整評估時段以包含 2018 年 5 月 23 日之後的日期。或者，如果您的使用者使用存取金鑰以 AWS 程式設計方式存取 ，您可以參考存取金鑰上次使用的資訊，因為它在所有日期都是準確的。

**password\$1last\$1changed**  
使用者密碼上次設定的日期和時間，採用 [ISO 8601 日期時間格式](https://en.wikipedia.org/wiki/ISO_8601)。若使用者沒有密碼，此欄位中的值是 `N/A` (不適用)。

**password\$1next\$1rotation**  
如果帳戶的[密碼政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingPasswordPolicies.html)要求密碼輪換，則此欄位包含使用者需要設定新密碼的日期和時間，採用 [ISO 8601 日期時間格式](https://en.wikipedia.org/wiki/ISO_8601)。 AWS 帳戶 （根） 的值一律為 `not_supported`。

**mfa\$1active**  
當使用者啟用[多重要素驗證 (MFA)](id_credentials_mfa.md) 裝置時，此值為 `TRUE`，否則為 `FALSE`。

**access\$1key\$11\$1active**  
當使用者有存取金鑰且存取金鑰狀態為 `Active` 時，此值為 `TRUE`，否則為 `FALSE`。同時適用於帳戶根使用者和 IAM 使用者。

**access\$1key\$11\$1last\$1rotated**  
使用者的存取金鑰建立或前次變更的時間與日期，採用 [ISO 8601 日期時間格式](https://en.wikipedia.org/wiki/ISO_8601)。若使用者沒有主動式存取金鑰，此欄位中的值是 `N/A` (不適用)。同時適用於帳戶根使用者和 IAM 使用者。

**access\$1key\$11\$1last\$1used\$1date**  
使用者存取金鑰最近用於登入 AWS API 請求的日期與時間，採用 [ISO 8601 日期時間格式](https://en.wikipedia.org/wiki/ISO_8601)。如果存取金鑰在 15 分鐘的時間範圍內多次使用，則僅在此欄位中記錄第一次使用。同時適用於帳戶根使用者和 IAM 使用者。  
在以下情況中，此欄位的值為 `N/A` (不適用)：  
+ 使用者無存取金鑰。
+ 從未使用存取金鑰。
+ 自 IAM 於 2015 年 4 月 22 日開始追蹤此資訊後，存取金鑰未曾使用。

**access\$1key\$11\$1last\$1used\$1region**  
最近使用過存取金鑰的 [AWS 區域](https://docs.aws.amazon.com/general/latest/gr/rande.html)。如果存取金鑰在 15 分鐘的時間範圍內多次使用，則僅在此欄位中記錄第一次使用。同時適用於帳戶根使用者和 IAM 使用者。  
在以下情況中，此欄位的值為 `N/A` (不適用)：  
+ 使用者無存取金鑰。
+ 從未使用存取金鑰。
+ 存取金鑰最後一次使用的時間為 IAM 於 2015 年 4 月 22 日開始追蹤此資訊之前。
+ 上次使用的服務沒有區域限制，如 Amazon S3。

**access\$1key\$11\$1last\$1used\$1service**  
最近使用 存取金鑰存取 AWS 的服務。此欄位中的值會使用服務的命名空間 — 舉例來說，Amazon S3 為 `s3`、而 Amazon EC2 為 `ec2`。如果存取金鑰在 15 分鐘的時間範圍內多次使用，則僅在此欄位中記錄第一次使用。同時適用於帳戶根使用者和 IAM 使用者。  
在以下情況中，此欄位的值為 `N/A` (不適用)：  
+ 使用者無存取金鑰。
+ 從未使用存取金鑰。
+ 存取金鑰最後一次使用的時間為 IAM 於 2015 年 4 月 22 日開始追蹤此資訊之前。

**access\$1key\$12\$1active**  
當使用者有第二個存取金鑰且第二個存取金鑰狀態為 `Active` 時，此值為 `TRUE`。否則為 `FALSE`。同時適用於帳戶根使用者和 IAM 使用者。  
使用者最多可有兩個存取金鑰，首先更新金鑰，然後刪除先前的金鑰，從而使輪換變得更簡單。如需有關更新存取金鑰的詳細資訊，請參閱 [更新存取金鑰](id-credentials-access-keys-update.md)。

**access\$1key\$12\$1last\$1rotated**  
使用者的第二個存取金鑰建立或前次更新的時間與日期，採用 [ISO 8601 日期時間格式](https://en.wikipedia.org/wiki/ISO_8601)。若使用者沒有第二個主動式存取金鑰，此欄位中的值是 `N/A` (不適用)。同時適用於帳戶根使用者和 IAM 使用者。

**access\$1key\$12\$1last\$1used\$1date**  
使用者第二個存取金鑰最近用於簽署 AWS API 請求的日期和時間，採用 [ISO 8601 日期時間格式](https://en.wikipedia.org/wiki/ISO_8601)。如果存取金鑰在 15 分鐘的時間範圍內多次使用，則僅在此欄位中記錄第一次使用。同時適用於帳戶根使用者和 IAM 使用者。  
在以下情況中，此欄位的值為 `N/A` (不適用)：  
+ 使用者沒有第二個存取金鑰。
+ 從未使用第二個存取金鑰。
+ 使用者的第二個存取金鑰最後一次使用的時間為 IAM 於 2015 年 4 月 22 日開始追蹤此資訊之前。

**access\$1key\$12\$1last\$1used\$1region**  
使用者的第二個最近使用過存取金鑰的 [AWS 區域](https://docs.aws.amazon.com/general/latest/gr/rande.html)。如果存取金鑰在 15 分鐘的時間範圍內多次使用，則僅在此欄位中記錄第一次使用。同時適用於帳戶根使用者和 IAM 使用者。在以下情況中，此欄位的值為 `N/A` (不適用)：  
+ 使用者沒有第二個存取金鑰。
+ 從未使用第二個存取金鑰。
+ 使用者的第二個存取金鑰最後一次使用的時間為 IAM 於 2015 年 4 月 22 日開始追蹤此資訊之前。
+ 上次使用的服務沒有區域限制，如 Amazon S3。

**access\$1key\$12\$1last\$1used\$1service**  
最近使用使用者的第二個存取金鑰存取 AWS 的服務。此欄位中的值會使用服務的命名空間 — 舉例來說，Amazon S3 為 `s3`、而 Amazon EC2 為 `ec2`。如果存取金鑰在 15 分鐘的時間範圍內多次使用，則僅在此欄位中記錄第一次使用。同時適用於帳戶根使用者和 IAM 使用者。在以下情況中，此欄位的值為 `N/A` (不適用)：  
+ 使用者沒有第二個存取金鑰。
+ 從未使用第二個存取金鑰。
+ 使用者的第二個存取金鑰最後一次使用的時間為 IAM 於 2015 年 4 月 22 日開始追蹤此資訊之前。

**cert\$11\$1active**  
當使用者有 X.509 簽署的憑證且該憑證的狀態為 `Active` 時，此值為 `TRUE`，否則為 `FALSE`。

**cert\$11\$1last\$1rotated**  
使用者的簽署憑證建立或前次變更的時間與日期，採用 [ISO 8601 日期時間格式](https://en.wikipedia.org/wiki/ISO_8601)。若使用者沒有主動式簽署憑證，此欄位中的值是 `N/A` (不適用)。

**cert\$12\$1active**  
當使用者有第二個 X.509 簽署的憑證且該憑證的狀態為 `Active` 時，此值為 `TRUE`，否則為 `FALSE`。  
使用者最多可有兩個 X.509 簽署憑證，讓輪換更容易。

**cert\$12\$1last\$1rotated**  
使用者的第二個簽署憑證建立或前次變更的時間與日期，採用 [ISO 8601 日期時間格式](https://en.wikipedia.org/wiki/ISO_8601)。若使用者沒有第二個主動式簽署憑證，此欄位中的值是 `N/A` (不適用)。

**additional\$1credentials\$1info**  
當使用者有兩個以上的存取金鑰或憑證時，此值是其他存取金鑰或憑證的數量，以及可用來列出與使用者相關聯之存取金鑰或憑證的動作。

## 取得憑證報告 (主控台)
<a name="getting-credential-reports-console"></a>

您可以使用 AWS 管理主控台 將登入資料報告下載為逗號分隔值 (CSV) 檔案。

**下載憑證報告 (主控台)**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇 **Credential report (憑證報告)**。

1. 選擇 **Download Report (下載報告)**。

## 取得憑證報告 (AWS CLI)
<a name="getting-credential-reports-cliapi"></a>

**下載憑證報告 (AWS CLI)**

1. 產生登入資料報告。 會 AWS 儲存單一報告。如果報告存在，產生憑證報告會覆寫先前的報告。[https://docs.aws.amazon.com/cli/latest/reference/iam/generate-credential-report.html](https://docs.aws.amazon.com/cli/latest/reference/iam/generate-credential-report.html)

1. 檢視上次產生的報告：[https://docs.aws.amazon.com/cli/latest/reference/iam/get-credential-report.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-credential-report.html)

## 取得登入資料報告 (AWS API)
<a name="getting-credential-reports-api"></a>

**下載登入資料報告 (AWS API)**

1. 產生登入資料報告。 會 AWS 儲存單一報告。如果報告存在，產生憑證報告會覆寫先前的報告。[https://docs.aws.amazon.com/IAM/latest/APIReference/API_GenerateCredentialReport.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GenerateCredentialReport.html)

1. 檢視上次產生的報告：[https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetCredentialReport.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetCredentialReport.html)

# CodeCommit 的 IAM 登入資料：Git 登入資料、SSH 金鑰和 AWS 存取金鑰
<a name="id_credentials_ssh-keys"></a>

CodeCommit 是一項受管版本控制服務，可在 AWS 雲端中託管私有的 Git 儲存庫。若要使用 CodeCommit，請將 Git 用戶端設定為與 CodeCommit 儲存庫通訊。作為此組態的一部分，您提供 CodeCommit 可用於對您進行身分驗證的 IAM 憑證。IAM 支援 CodeCommit 有三種類型的憑證：
+ Git 憑證，一種 IAM 產生的使用者名稱和密碼對，可用於透過 HTTPS 與 CodeCommit 儲存庫進行通訊。
+ SSH 金鑰，一種本機產生的公有私有金鑰對，您可以將其與 IAM 使用者關聯，以透過 SSH 與 CodeCommit 儲存庫進行通訊。
+  [AWS 存取金鑰](id_credentials_access-keys.md)，您可以使用 隨附的登入資料協助程式 AWS CLI ，透過 HTTPS 與 CodeCommit 儲存庫通訊。

**注意**  
您無法使用 SSH 金鑰或 Git 憑證來存取另一個 AWS 帳戶中的儲存庫。若要了解如何為另一個 IAM 使用者和群組設定 CodeCommit 儲存庫的存取權 AWS 帳戶，請參閱*AWS CodeCommit 《 使用者指南*》中的[使用 角色設定 AWS CodeCommit 儲存庫的跨帳戶存取權](https://docs.aws.amazon.com/codecommit/latest/userguide/cross-account.html)。

如需有關每個選項的詳細資訊，請參閱下列各節。

## 與 CodeCommit 一起使用 Git 憑證和 HTTPS (建議)
<a name="git-credentials-code-commit"></a>

使用 Git 憑證後，您可以為 IAM 使用者產生靜態的使用者名稱和密碼對，然後將這些憑證用於 HTTPS 連線。您還可以將這些憑證用於支援靜態的 Git 憑證的任何第三方工具或整合開發環境 (IDE)。

由於這些憑證對於所有受支援的作業系統都是通用的，並且與大多數憑證管理系統、開發環境和其他軟體開發工具相容，因此建議使用此方法。您可以隨時重設 Git 憑證的密碼。您還可以使憑證處於非作用中，或者在不再需要時刪除它們。

**注意**  
您無法為 Git 憑證選擇自己的使用者名稱或密碼。IAM 會為您產生這些登入資料，以協助確保它們符合 CodeCommit 中 AWS 和 安全儲存庫的安全標準。您只能在產生憑證時作一次下載。請確定將憑證儲存在安全的位置。如有需要，您可以隨時重設密碼，但這樣做會使用舊密碼設定的任何連線無效。在連線之前，必須重新設定連線以使用新密碼。

如需詳細資訊，請參閱下列主題：
+ 若要建立 IAM 使用者，請參閱 [在 中建立 IAM 使用者 AWS 帳戶](id_users_create.md)。
+ 若要使用 CodeCommit 產生和使用 Git 憑證，請參閱 *AWS CodeCommit 使用者指南*中的[使用 Git 憑證的 HTTPS 使用者](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html)。

**注意**  
產生 Git 憑證後變更 IAM 使用者的名稱不會變更 Git 憑證的使用者名稱。使用者名稱和密碼保持不變，且仍然有效。

**若要更新服務特定的憑證**

1. 除了目前正在使用的設定之外，還要建立第二個特定於服務的憑證設定。

1. 更新您的所有應用程式，以使用新設定的憑證並驗證應用程式是否正常工作。

1. 將原始憑證的狀態變更為「非作用中」。

1. 確認您的所有應用程式仍在運作。

1. 刪除非作用中特定於服務的憑證

## 與 CodeCommit 一起使用的 SSH 金鑰和 SSH
<a name="ssh-keys-code-commit"></a>

使用 SSH 連接，您可以在本機電腦上建立 Git 和 CodeCommit 用於 SSH 身分驗證的公有和私有金鑰檔案。您將公有金鑰與 IAM 使用者關聯，並將私有金鑰存放在本機電腦上。如需詳細資訊，請參閱下列主題：
+ 若要建立 IAM 使用者，請參閱 [在 中建立 IAM 使用者 AWS 帳戶](id_users_create.md)。
+ 若要建立 SSH 公有金鑰，並將其與 IAM 使用者關聯的詳細資訊，請參閱[在 Linux、macOS 或 Unix 上的 SSH 連線](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-unixes.html)，或查看 *AWS CodeCommit 使用者指南*中的[在 Windows 上的 SSH 連線](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-windows.html)。

**注意**  
公有金鑰必須以 ssh-rsa 格式或 PEM 格式編碼。公有金鑰的最小位元長度為 2048 位元，最長為 16384 位元。這與您上傳的檔案大小不同。例如，您可以產生 2048 位元索引鍵，產生的 PEM 檔案長度為 1679 位元組。如果以其他格式或大小提供公有金鑰，則會看到錯誤訊息，指出該金鑰格式無效。

## 搭配 AWS CLI 登入資料協助程式和 CodeCommit 使用 HTTPS
<a name="access-keys-code-commit"></a>

做為使用 Git 登入資料進行 HTTPS 連線的替代方案，只要 Git 需要向 進行身分驗證 AWS 才能與 CodeCommit 儲存庫互動，您就可以允許 Git 使用 IAM 使用者登入資料或 Amazon EC2 執行個體角色的密碼編譯簽署版本。這是 CodeCommit 儲存庫不需要 IAM 使用者的唯一連線方法。這也是使用聯合身分存取和臨時憑證的唯一方法。如需詳細資訊，請參閱下列主題：
+ 若要進一步了解有關聯合身分存取的詳細資訊，請參閱 [身分提供者和聯合身分 AWS](id_roles_providers.md) 和 [對外部驗證的使用者的存取權 (聯合身分)](id_roles_common-scenarios_federated-users.md)。
+ 若要進一步了解暫時憑證，請參閱 [IAM 中的暫時安全憑證](id_credentials_temp.md) 和 [CodeCommit 儲存庫的暫時存取](https://docs.aws.amazon.com/codecommit/latest/userguide/temporary-access.html)。

 AWS CLI 登入資料協助程式與其他登入資料協助程式系統不相容，例如 Keychain Access 或 Windows Credential Management。當使用憑證協助程式設定 HTTPS 連線時，會有額外的組態考量。如需詳細資訊，請參閱*AWS CodeCommit 《 使用者指南*》中的[使用 AWS CLI 登入資料協助程式進行 Linux、macOS 或 Unix](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-unixes.html) 上的 HTTPS 連線，或使用[AWS CLI 登入資料協助程式進行 Windows 上的 HTTPS 連線](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-windows.html)。

# 在 IAM 中管理伺服器憑證
<a name="id_credentials_server-certs"></a>

若要在 中啟用網站或應用程式的 HTTPS 連線 AWS，您需要 SSL/TLS *伺服器憑證*。處理 AWS Certificate Manager (ACM) 可支援區域中的憑證時，我們建議您使用 ACM 來佈建、管理和部署您的伺服器憑證。在不支援的區域中，您必須使用 IAM 作為憑證管理員。如需了解 ACM 支援哪些區域，請參閱 *AWS 一般參考* 中的 [AWS Certificate Manager 端點和配額](https://docs.aws.amazon.com/general/latest/gr/acm.html)。

**重要**  
ACM 為佈建、管理和部署伺服器憑證的首選工具。使用 ACM，您可以請求憑證或將現有的 ACM 或外部憑證部署至 AWS 資源。ACM 提供的憑證為免費且會自動續約。在[支援的區域](https://docs.aws.amazon.com/general/latest/gr/acm.html)中，您可以使用 ACM 從主控台或以程式設計方式管理伺服器憑證。如需有關 ACM 的詳細資訊，請參閱 [https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html)。如需有關請求 ACM 憑證的詳細資訊，請參閱 *AWS Certificate Manager 使用者指南*中的[請求公有憑證](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html)或[請求私有憑證](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-private.html)。如需有關將第三方憑證匯入 ACM 的詳細資訊，請參閱《*AWS Certificate Manager 使用者指南*》中的[匯入憑證](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)。

只有當您必須在 [ACM 不支援](https://docs.aws.amazon.com/general/latest/gr/acm.html)的區域中支援 HTTPS 連接時，才應使用 IAM 作為憑證管理器。IAM 會安全地加密您的私有金鑰並將加密的版本儲存在 IAM SSL 憑證存放區中。IAM 支援在所有區域中部署伺服器憑證，但您必須從外部供應商取得憑證以搭配 使用 AWS。不能將 ACM 憑證上傳到 IAM。此外，也無法從 IAM 主控台管理憑證，

如需有關如何將第三方憑證上傳到 IAM 的詳細資訊，請參閱下列主題。

**Topics**
+ [上傳伺服器憑證 (AWS API)](#upload-server-certificate)
+ [AWS 伺服器憑證的 API 操作](#id_credentials_server-certs-api)
+ [對伺服器憑證進行疑難排解](#server-certificate-troubleshooting)

## 上傳伺服器憑證 (AWS API)
<a name="upload-server-certificate"></a>

若要將伺服器憑證上傳至 IAM，您必須提供憑證及相符的私有金鑰。當憑證並非自我簽署憑證時，您還必須提供憑證鏈。(上傳自簽署憑證時無需憑證連結。) 在上傳憑證前，請確保您已具有所有這些項目且滿足以下條件：
+ 憑證在上傳時必須有效。您不能在憑證有效期開始 (憑證的 `NotBefore` 日期) 之前或憑證有效期到期 (憑證的 `NotAfter` 日期) 之後上傳憑證。
+ 私有金鑰必須為未加密。您無法上傳受密碼或複雜密碼保護的私有金鑰。有關解密已加密的私有金鑰的說明資訊，請參閱 [對伺服器憑證進行疑難排解](#server-certificate-troubleshooting)。
+ 憑證、私有金鑰和憑證鏈全都必須採用 PEM 編碼。有關將這些項目轉換為 PEM 格式的說明資訊，請參閱 [對伺服器憑證進行疑難排解](#server-certificate-troubleshooting)。

若要使用 [IAM API](https://docs.aws.amazon.com/IAM/latest/APIReference/) 上傳憑證，請傳送 [UploadServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UploadServerCertificate.html) 請求。以下範例顯示如何使用 [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/) 執行此作業。該範例假設如下：
+ PEM 編碼的憑證存放在名為 `Certificate.pem` 的檔案中。
+ PEM 編碼的憑證鏈存放在名為 `CertificateChain.pem` 的檔案中。
+ PEM 編碼的未加密私有金鑰存放在名為 `PrivateKey.pem` 的檔案中。
+ (選用) 您要使用鍵值組來標記伺服器憑證。例如，您可以新增標籤金鑰 `Department` 和標籤值 `Engineering`，以協助您識別和整理憑證。

若要使用下列範例命令，請將這些檔案名稱取代為您自己的檔案名稱。使用您上傳憑證的名稱取代 *ExampleCertificate*。如果您要標記憑證，請將 *ExampleKey* 和 *ExampleValue* 標籤鍵值組取代為您自己的值。在連續的一行中輸入命令。為方便閱讀，以下範例包含分行符號和多餘的空格。

```
aws iam upload-server-certificate --server-certificate-name ExampleCertificate
                                    --certificate-body file://Certificate.pem
                                    --certificate-chain file://CertificateChain.pem
                                    --private-key file://PrivateKey.pem
                                    --tags '{"Key": "ExampleKey", "Value": "ExampleValue"}'
```

如果上述命令執行成功，則它將傳回上傳憑證的相關中繼資料，包括其 [Amazon Resource Name (ARN)](reference_identifiers.md#identifiers-arns)、易記名稱、識別符 (ID)、過期日期、標籤等。

**注意**  
如果您要上傳用於 Amazon CloudFront 的伺服器憑證，則必須使用 `--path` 選項指定路徑。路徑必須以 `/cloudfront` 開頭，且必須包含結尾反斜線 (例如，`/cloudfront/test/`)。

若要使用 AWS Tools for Windows PowerShell 上傳憑證，請使用 [Publish-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Publish-IAMServerCertificate.html&tocid=Publish-IAMServerCertificate)。

## AWS 伺服器憑證的 API 操作
<a name="id_credentials_server-certs-api"></a>

使用下列命令來檢視、標記、重新命名及刪除伺服器憑證。
+ 使用 [GetServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServerCertificate.html) 來擷取憑證。此請求將傳回憑證、憑證鏈 (如果已上傳一個) 和有關憑證的中繼資料。
**注意**  
在您上傳後，無法從 IAM 下載或擷取私有金鑰。
+ 使用 [Get-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Get-IAMServerCertificate.html&tocid=Get-IAMServerCertificate) 來擷取憑證。
+ 使用 [ListServerCertificates](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServerCertificates.html) 來列出您已上傳的伺服器憑證。請求會傳回包含有關每個憑證的中繼資料的清單。
+ 使用 [Get-IAMServerCertificates](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Get-IAMServerCertificates.html&tocid=Get-IAMServerCertificates) 來列出您已上傳的伺服器憑證。
+ 使用 [TagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagServerCertificate.html) 來標記現有的伺服器憑證。
+ 使用 [UntagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagServerCertificate.html) 來取消標記伺服器憑證。
+ 使用 [UpdateServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServerCertificate.html) 來重新命名伺服器憑證或更新其路徑。

   以下範例顯示如何使用 AWS CLI執行此作業。

  若要使用以下範例指令，請將取代舊與新的憑證名稱與憑證路徑，並在連續的一行中輸入命令。為方便閱讀，以下範例包含分行符號和多餘的空格。

  ```
  aws iam update-server-certificate --server-certificate-name ExampleCertificate
                                      --new-server-certificate-name CloudFrontCertificate
                                      --new-path /cloudfront/
  ```

  若要使用 AWS Tools for Windows PowerShell 重新命名伺服器憑證或更新其路徑，請使用 [Update-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Update-IAMServerCertificate.html&tocid=Update-IAMServerCertificate)。
+ 使用 [DeleteServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServerCertificate.html) 來刪除伺服器憑證。

  若要使用 AWS Tools for Windows PowerShell 刪除伺服器憑證，請使用 [Remove-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Remove-IAMServerCertificate.html&tocid=Remove-IAMServerCertificate)。

## 對伺服器憑證進行疑難排解
<a name="server-certificate-troubleshooting"></a>

您必須先確保憑證、私有金鑰和憑證連結均使用 PEM 編碼，然後才能將憑證上傳到 IAM。您還必須確保私有金鑰為未加密。請參閱以下範例。

**Example PEM 編碼憑證範例**  

```
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
```

**Example PEM 編碼的未加密私有金鑰範例**  

```
-----BEGIN RSA PRIVATE KEY-----
Base64-encoded private key
-----END RSA PRIVATE KEY-----
```

**Example PEM 編碼的憑證鏈範例**  
憑證鏈包含一或多個憑證。您可以使用文字編輯器、Windows 的 copy 命令，或 Linux cat 命令，將憑證檔案串連為憑證鏈。當您包含多個憑證時，每個憑證必須認證先前的憑證。您可以透過串連憑證 (包含上一個根 CA 憑證) 來完成此動作。  
以下範例包含三個憑證，但您的憑證鏈可包含更多或更少憑證。  

```
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
```

如果這些項目在上傳到 IAM 時未採用正確的格式，您可以使用 [OpenSSL](https://openssl.org/) 將其轉換為正確的格式。

**將憑證或憑證鍊從 DER 轉換為 PEM**  
使用 [OpenSSL **x509** 命令](https://openssl.org/docs/manmaster/man1/x509.html)，如下列範例。在以下範例命令中，將 `Certificate.der` 替換為包含您的 DER 編碼的憑證檔案的名稱。以偏好的輸出檔案名稱取代 `Certificate.pem`，以包含 PEM 編碼的憑證。  

```
openssl x509 -inform DER -in Certificate.der -outform PEM -out Certificate.pem
```
 

**若要將私有金鑰從 DER 轉換為 PEM**  
使用 [OpenSSL **rsa** 命令](https://openssl.org/docs/manmaster/man1/rsa.html)，如下列範例。在以下範例命令中，將 `PrivateKey.der` 替換為包含您的 DER 編碼的私有金鑰檔案的名稱。以偏好的輸出檔案名稱取代 `PrivateKey.pem`，以包含 PEM 編碼的私有金鑰。  

```
openssl rsa -inform DER -in PrivateKey.der -outform PEM -out PrivateKey.pem
```
 

**解密已加密的私有金鑰 (移除密碼或密碼短語)**  
使用 [OpenSSL **rsa** 命令](https://openssl.org/docs/manmaster/man1/rsa.html)，如下列範例。若要使用以下範例命令，將 `EncryptedPrivateKey.pem` 替換為包含您的已加密私有金鑰檔案的名稱。以偏好的輸出檔案名稱取代 `PrivateKey.pem`，以包含 PEM 編碼的未加密私有金鑰。  

```
openssl rsa -in EncryptedPrivateKey.pem -out PrivateKey.pem
```
 

**將憑證 bundle 從 PKCS\$112 (PFX) 轉換為 PEM**  
使用 [OpenSSL **pkcs12** 命令](https://openssl.org/docs/manmaster/man1/pkcs12.html)，如下列範例。在以下範例命令中，將 `CertificateBundle.p12` 替換為包含您的 PKCS\$112 編碼的憑證 bundle 的名稱。以偏好的輸出檔案名稱取代 `CertificateBundle.pem`，以包含 PEM 編碼的憑證 bundle。  

```
openssl pkcs12 -in CertificateBundle.p12 -out CertificateBundle.pem -nodes
```
 

**將憑證 bundle 從 PKCS\$17 轉換為 PEM**  
使用 [OpenSSL **pkcs7** 命令](https://openssl.org/docs/manmaster/man1/pkcs7.html)，如下列範例。在以下範例命令中，將 `CertificateBundle.p7b` 替換為包含您的 PKCS\$17 編碼的憑證 bundle 的名稱。以偏好的輸出檔案名稱取代 `CertificateBundle.pem`，以包含 PEM 編碼的憑證 bundle。  

```
openssl pkcs7 -in CertificateBundle.p7b -print_certs -out CertificateBundle.pem
```