

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

# `AWSSupport-TroubleshootRDSIAMAuthentication`
<a name="automation-aws-troubleshoot-rds-iam-authentication"></a>

 **Description** 

 `AWSSupport-TroubleshootRDSIAMAuthentication` 有助於疑難排解 Amazon RDS for PostgreSQL、Amazon RDS for MySQL、Amazon RDS for MariaDB、Amazon Aurora PostgreSQL 和 Amazon Aurora MySQL 執行個體的 AWS Identity and Access Management (IAM) 身分驗證。使用此 Runbook 來驗證使用 Amazon RDS 執行個體或 Aurora 叢集進行 IAM 身分驗證所需的組態。它也提供步驟來修正 Amazon RDS 執行個體或 Aurora 叢集的連線問題。

**重要**  
 此 Runbook 不支援 Amazon RDS for Oracle 或 Amazon RDS for Microsoft SQL Server。

**重要**  
 如果提供來源 Amazon EC2 執行個體且目標資料庫為 Amazon RDS，`AWSSupport-TroubleshootConnectivityToRDS`則會叫用子自動化來疑難排解 TCP 連線。輸出也提供您可以在 Amazon EC2 執行個體或來源機器上執行的命令，以使用 IAM 身分驗證連線至 Amazon RDS 執行個體。

 **如何運作？** 

此 Runbook 包含六個步驟：
+ **步驟 1： validateInputs：**驗證自動化的輸入。
+ **步驟 2： branchOnSourceEC2Provided：**驗證輸入參數中是否提供來源 Amazon EC2 執行個體 ID。
+ **步驟 3：validateRDSConnectivity：**如果提供，則從來源 Amazon EC2 執行個體驗證 Amazon RDS 連線。
+ **步驟 4： validateRDSIAMAuthentication：**驗證 IAM 驗證功能是否已啟用。
+ **步驟 5： validateIAMPolicies：**驗證所提供的 IAM 使用者/角色中是否存在所需的 IAM 許可。
+ **步驟 6： generateReport：**產生先前執行步驟結果的報告。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDSIAMAuthentication) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（選用） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
+ RDSType

  類型：字串

  描述：（必要）：選取您嘗試連線和驗證的關聯式資料庫類型。

  允許的值： `Amazon RDS` 或 `Amazon Aurora Cluster.` 
+ DBInstanceIdentifier

  類型：字串

  描述：（必要） 目標 Amazon RDS 資料庫執行個體或 Aurora 資料庫叢集的識別符。

  允許模式： `^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$`

  最大字元數：63
+ SourceEc2InstanceIdentifier

  類型：`AWS::EC2::Instance::Id`

  描述：（選用） 如果您要從相同帳戶和區域中執行的 Amazon EC2 執行個體連線至 Amazon RDS 資料庫執行個體，則為 Amazon EC2 執行個體 ID。如果來源不是 Amazon EC2 執行個體或目標 Amazon RDS 類型是 Aurora 資料庫叢集，請勿指定此參數。

  預設：`""`
+ DBIAMRoleName

  類型：字串

  描述：（選用） 用於 IAM 型身分驗證的 IAM 角色名稱。只有在`DBIAMUserName`未提供 參數時才提供，否則請將其保留空白。必須提供 `DBIAMRoleName` 或 `DBIAMUserName`。

  允許模式： `^[a-zA-Z0-9+=,.@_-]{1,64}$|^$`

  最大字元數：64

  預設：`""`
+ DBIAMUserName

  類型：字串

  描述：（選用） 用於 IAM 型身分驗證的 IAM 使用者名稱。只有在未提供 `DBIAMRoleName` 參數時才提供，否則請將其保留空白。必須提供 `DBIAMRoleName` 或 `DBIAMUserName`。

  允許模式： `^[a-zA-Z0-9+=,.@_-]{1,64}$|^$`

  最大字元數：64

  預設：`""`
+ DBUserName

  類型：字串

  描述：（選用） 映射至 IAM 角色/使用者的資料庫使用者名稱，以在資料庫中進行 IAM 型身分驗證。預設選項會`*`評估資料庫中所有使用者是否允許 `rds-db:connect`許可。

  允許模式： `^[a-zA-Z0-9+=,.@*_-]{1,64}$`

  最大字元數：64

  預設：`*`

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+ `ec2:DescribeInstances`
+ `ec2:DescribeNetworkAcls`
+ `ec2:DescribeRouteTables`
+ `ec2:DescribeSecurityGroups`
+ `ec2:DescribeSubnets`
+ `iam:GetPolicy`
+ `iam:GetRole`
+ `iam:GetUser`
+ `iam:ListAttachedRolePolicies`
+ `iam:ListAttachedUserPolicies`
+ `iam:ListRolePolicies`
+ `iam:ListUserPolicies`
+ `iam:SimulatePrincipalPolicy`
+ `rds:DescribeDBClusters`
+ `rds:DescribeDBInstances`
+ `ssm:DescribeAutomationStepExecutions`
+ `ssm:GetAutomationExecution`
+ `ssm:StartAutomationExecution`

 **指示** 

1. 導覽至 AWS Systems Manager 主控台中的 [AWSSupport-TroubleshootRDSIAMAuthentication](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDSIAMAuthentication)。

1. 選取**執行自動化**

1. 針對輸入參數，輸入下列內容：
   + **AutomationAssumeRole （選用）：**

     (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)，允許 Systems Manager Automation 代表您執行動作。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
   + **RDSType （必要）：**

     選取您嘗試連線和驗證的 Amazon RDS 類型。從兩個允許的值中選擇： `Amazon RDS` 或 `Amazon Aurora Cluster.`
   + **DBInstanceIdentifier （必要）：**

     輸入您嘗試連線的目標 Amazon RDS 資料庫執行個體或 Aurora 叢集的識別符，並使用 IAM 登入資料進行身分驗證。
   + **SourceEc2InstanceIdentifier （選用）：**

     如果您要從位於相同帳戶和區域的 Amazon EC2 執行個體連線至 Amazon RDS 資料庫執行個體，請提供 Amazon EC2 執行個體 ID。如果來源不是 Amazon EC2 或目標 Amazon RDS 類型是 Aurora 叢集，請保留空白。
   + **DBIAMRoleName （選用）：**

     輸入用於 IAM 型身分驗證的 IAM 角色名稱。只有在`DBIAMUserName`未提供 時才提供；否則，請保留空白。必須提供 `DBIAMRoleName` 或 `DBIAMUserName`。
   + **DBIAMUserName （選用）：**

      輸入用於 IAM 型身分驗證的 IAM 使用者。只有在`DBIAMRoleName`未提供 時才提供 ，否則請保留空白。必須提供 `DBIAMRoleName` 或 `DBIAMUserName`。
   + **DBUserName （選用）：**

     輸入映射至 IAM 角色/使用者的資料庫使用者，以在資料庫中進行以 IAM 為基礎的身分驗證。預設選項`*`用於評估；此欄位未提供任何內容。  
![\[Input parameters form for AWS Systems Manager with fields for EC2 instance and database configuration.\]](http://docs.aws.amazon.com/zh_tw/systems-manager-automation-runbooks/latest/userguide/images/awssupport-troubleshoot-rds-iam-authentication_input_parameters.png)

1. 選取**執行**。

1. 請注意，自動化會啟動。

1. 文件會執行下列步驟：
   + **步驟 1： validateInputs：**

     驗證自動化的輸入 - `SourceEC2InstanceIdentifier`（選用）、 `DBInstanceIdentifier`或 `ClusterID`，以及 `DBIAMRoleName`或 `DBIAMUserName`。它會驗證輸入的輸入參數是否存在於您的帳戶和區域中。它也會驗證使用者是否輸入其中一個 IAM 參數 （例如 `DBIAMRoleName`或 `DBIAMUserName`)。此外，它會執行其他驗證，例如，如果提及的資料庫處於可用狀態。
   + **步驟 2： branchOnSourceEC2Provided：**

     驗證來源 Amazon EC2 是否在輸入參數中提供，而資料庫是 Amazon RDS。如果是，它會繼續進行步驟 3。如果沒有，它會略過步驟 3，即 Amazon EC2-Amazon RDS 連線驗證，並繼續進行步驟 4。
   + **步驟 3： validateRDSConnectivity：**

     如果在輸入參數中提供來源 Amazon EC2，且資料庫是 Amazon RDS，則步驟 2 會啟動步驟 3。在此步驟中，`AWSSupport-TroubleshootConnectivityToRDS`會叫用子自動化，以驗證來源 Amazon EC2 的 Amazon RDS 連線能力。子自動化 Runbook `AWSSupport-TroubleshootConnectivityToRDS` 會驗證所需的網路組態 (Amazon Virtual Private Cloud 【Amazon VPC】、安全群組、網路存取控制清單 【NACL】、Amazon RDS 可用性） 是否已到位，以便您可以從 Amazon EC2 執行個體連線至 Amazon RDS 執行個體。
   + **步驟 4： validateRDSIAMAuthentication：**

     驗證是否已在 Amazon RDS 執行個體或 Aurora 叢集上啟用 IAM 身分驗證功能。
   + **步驟 5：validateIAMPolicies：**

     驗證傳遞的 IAM 使用者/角色中是否存在必要的 IAM 許可，以讓 IAM 登入資料能夠驗證指定資料庫使用者的 Amazon RDS 執行個體 （如果有的話）。
   + **步驟 6： generateReport：**

     從先前的步驟取得所有資訊，並列印每個步驟的結果或輸出。它還列出了使用 IAM 登入資料連接到 Amazon RDS 執行個體的參考和執行步驟。

1. 自動化完成後，請檢閱**輸出**區段以取得詳細結果：
   + **檢查連線至資料庫的 IAM 使用者/角色許可：**

     驗證傳遞的 IAM 使用者/角色中是否存在所需的 IAM 許可，讓 IAM 登入資料能夠向指定資料庫使用者的 Amazon RDS 執行個體進行身分驗證 （如果有的話）。
   + **檢查資料庫的 IAM 型身分驗證屬性：**

     驗證是否已為指定的 Amazon RDS 資料庫/Aurora 叢集啟用 IAM 身分驗證功能。
   + **檢查從 Amazon EC2 執行個體到 Amazon RDS 執行個體的連線：**

     驗證所需的網路組態 (Amazon VPC、安全群組、NACL、Amazon RDS 可用性） 是否已就緒，以便從 Amazon EC2 執行個體連線至 Amazon RDS 執行個體。
   + **後續步驟:**

     列出使用 IAM 登入資料連接到 Amazon RDS 執行個體的參考和執行命令和步驟。  
![\[Troubleshooting results for IAM permissions and authentication for an Aurora MySQL database.\]](http://docs.aws.amazon.com/zh_tw/systems-manager-automation-runbooks/latest/userguide/images/awssupport-troubleshoot-rds-iam-authentication_outputs.png)

 **參考** 

Systems Manager Automation
+ [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDSIAMAuthentication)
+ [執行自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [設定自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [支援自動化工作流程登陸頁面](https://aws.amazon.com/premiumsupport/technology/saw/)