

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

# 設定 RDS Proxy 的 IAM 身分驗證
<a name="rds-proxy-iam-setup"></a>

若要在 Amazon RDS 中設定 RDS Proxy 的 AWS Identity and Access Management (IAM) 身分驗證，請建立並設定授予必要許可的 IAM 政策。

本主題提供設定 RDS Proxy IAM 身分驗證的步驟，包括建立必要的 IAM 政策並將其連接至 IAM 角色。

**提示**  
只有在您想要建立自己的 IAM 角色時，才需要此程序。否則，RDS 可以在設定代理時自動建立必要的角色，因此您可以略過這些步驟。

## 先決條件
<a name="rds-proxy-iam-setup-prereqs"></a>

設定 RDS Proxy 的 IAM 身分驗證之前，請確定您有下列項目：
+ **AWS Secrets Manager** – 至少有一個存放的秘密，其中包含資料庫憑證。如需如何建立秘密的指示，請參閱 [設定 RDS Proxy 的資料庫登入資料](rds-proxy-secrets-arns.md)。

  如果您使用end-to-end 身分驗證，則不需要這麼做。
+ **IAM 許可** – 具有在 AWS Secrets Manager中建立及管理 IAM 政策、角色和秘密之許可的 IAM 角色或使用者。

## 建立end-to-end IAM 身分驗證的 IAM 政策
<a name="rds-proxy-iam-setup-e2e-steps"></a>

使用end-to-end IAM 身分驗證時，RDS Proxy 會使用 IAM 身分驗證連線至資料庫，而不是從 Secrets Manager 擷取憑證。這需要為要與代理搭配使用的資料庫帳戶設定具有`rds-db:connect`許可的 IAM 角色。

若要使用 IAM 向資料庫驗證 RDS Proxy，請使用授予必要資料庫連線許可的政策來建立 IAM 角色。

### 主控台
<a name="rds-proxy-iam-e2e-console"></a>

**使用代理建立end-to-end IAM 身分驗證的角色**

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

1. 建立角色的許可政策。如需一般步驟，請參閱[建立 IAM 政策 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)。

   將此政策貼到 JSON 編輯器，並進行以下變更：。
   + 替換為您自己的帳戶 ID。
   + `us-east-2` 以代理必須所在的 取代 。
   + 將資料庫資源 IDs和使用者名稱替換成您要使用的資料庫資源 ID 和使用者名稱。RDS 執行個體和 之間的資源 ID 格式不同Aurora clusters。

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "rds-db:connect",
               "Resource": [
                   "arn:aws:rds-db:us-east-2:account_id:dbuser:db_instance_resource_id/db_user_name_1",
                   "arn:aws:rds-db:us-east-2:account_id:dbuser:db_instance_resource_id/db_user_name_2"
               ]
           }
       ]
   }
   ```

1. 建立角色並將許可政策連接至其中。如需一般步驟，請參閱[建立角色以將許可委派給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

   對於**信任的實體類型**，選擇 **AWS 服務**。在**使用案例**底下，選取 **RDS**，並為使用案例選擇 **RDS - 將角色新增至資料庫**。

1. 對於**許可政策**，選擇您建立的政策。

1. 對於**選取受信任的實體**，輸入角色的下列信任政策：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": "rds.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

### AWS CLI
<a name="rds-proxy-iam-e2e-cli"></a>

若要使用 建立角色 AWS CLI，請傳送下列請求：

```
aws iam create-role \
  --role-name my_e2e_iam_role_name \

  --assume-role-policy-document '{"Version":"2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"Service":["rds.amazonaws.com"]},"Action":"sts:AssumeRole"}]}'
```

接著，將政策連接至該角色：

```
aws iam put-role-policy \
  --role-name my_e2e_iam_role_name \
  --policy-name e2e_iam_db_connect_policy \
  --policy-document '{

    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "rds-db:connect",
            "Resource": [
                "arn:aws:rds-db:us-east-2:account_id:dbuser:db_instance_resource_id/db_user_name_1",
                "arn:aws:rds-db:us-east-2:account_id:dbuser:db_instance_resource_id/db_user_name_2"
            ]
        }
    ]
}'
```

設定end-to-end IAM 身分驗證的 IAM 角色和許可後，您現在可以建立將 `DefaultAuthScheme` 設為 的代理`IAM_AUTH`。此代理會使用 IAM 直接驗證資料庫，而不需要 Secrets Manager 秘密。如需說明，請參閱[為 Amazon RDS 建立代理](rds-proxy-creating.md)。

使用end-to-end IAM 身分驗證時，請確定您的資料庫使用者已設定為 IAM 身分驗證，如中所述[使用 IAM 身分驗證建立資料庫帳戶](UsingWithRDS.IAMDBAuth.DBAccounts.md)。

## 建立 Secrets Manager 存取的 IAM 政策
<a name="rds-proxy-iam-setup-steps"></a>

若要允許 RDS Proxy 從 Secrets Manager 擷取資料庫憑證，請使用可授予必要許可的政策建立 IAM 角色。

## 主控台
<a name="rds-proxy-iam-console"></a>

**建立可存取私密的角色以與代理搭配使用**

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

1. 建立角色的許可政策。如需一般步驟，請參閱[建立 IAM 政策 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)。

   將此政策貼到 JSON 編輯器，並進行以下變更：。
   + 替換為您自己的帳戶 ID。
   + 將 `us-east-2` 替代為代理所在的區域。
   + 將秘密名稱替代為您建立的秘密名稱。如需詳細資訊，請參閱[在 IAM 政策陳述式中指定 KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/cmks-in-iam-policies.html)。
   + 將 KMS 金鑰 ID 替代為您用來加密 Secrets Manager 秘密的金鑰 ID，可以是預設金鑰或您自己的金鑰。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "secretsmanager:GetSecretValue",
               "Resource": [
                   "arn:aws:secretsmanager:us-east-2:111122223333:secret:secret_name_1",
                   "arn:aws:secretsmanager:us-east-2:111122223333:secret:secret_name_2"
               ]
           },
           {
               "Effect": "Allow",
               "Action": "kms:Decrypt",
               "Resource": "arn:aws:kms:us-east-2:111122223333:key/key_id",
               "Condition": {
                   "StringEquals": {
                       "kms:ViaService": "secretsmanager.us-east-2.amazonaws.com"
                   }
               }
           }
       ]
   }
   ```

------

1. 建立角色並將許可政策連接至其中。如需一般步驟，請參閱[建立角色以將許可委派給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

   對於**信任的實體類型**，選擇 **AWS 服務**。在**使用案例**底下，選取 **RDS**，並為使用案例選擇 **RDS - 將角色新增至資料庫**。

1. 對於**許可政策**，選擇您建立的政策。

1. 對於**選取受信任的實體**，輸入角色的下列信任政策：

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": "rds.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

## AWS CLI
<a name="rds-proxy-iam-cli"></a>

若要使用 建立角色 AWS CLI，請傳送下列請求：

```
aws iam create-role \
  --role-name my_role_name \
  --assume-role-policy-document '{"Version": "2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"Service":["rds.amazonaws.com"]},"Action":"sts:AssumeRole"}]}'
```

接著，將政策連接至該角色：

```
aws iam put-role-policy \
  --role-name my_role_name \
  --policy-name secret_reader_policy \
  --policy-document '{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "secretsmanager:GetSecretValue",
            "Resource": [
                "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_1",
                "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_2"
            ]
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "kms:Decrypt",
            "Resource": "arn:aws:kms:us-east-2:account_id:key/key_id",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "secretsmanager.us-east-2.amazonaws.com"
                }
            }
        }
    ]
}'
```

設定 IAM 角色和許可後，您現在可以建立代理並將其與此角色建立關聯。這可讓代理從 安全地擷取資料庫憑證， AWS Secrets Manager 並為您的應用程式啟用 IAM 身分驗證。如需說明，請參閱[為 Amazon RDS 建立代理](rds-proxy-creating.md)。