建立並使用 IAM 政策進行 IAM 資料庫存取 - Amazon Aurora

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

建立並使用 IAM 政策進行 IAM 資料庫存取

若要允許使用者或角色連接資料庫叢集,您必須建立 IAM 政策。然後,您可以將政策連接到許可集或角色。

注意

若要進一步了解 IAM 政策,請參閱Amazon Aurora 的身分和存取管理

以下範例政策可讓使用者利用 IAM 資料庫身分驗證來連接資料庫叢集

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:1234567890:dbuser:db-ABCDEFGHIJKL01234/db_user" ] } ] }
JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:1234567890:dbuser:cluster-ABCDEFGHIJKL01234/db_user" ] } ] }
重要

具有管理員許可的使用者可以存取資料庫叢集,而不需 IAM 政策中的明確許可。如果您想要將管理員的存取權限制為資料庫叢集,您可以建立具有適當、特殊權限較低的許可的 IAM 角色,並將其指派給管理員。

注意

請勿混淆 rds-db: 前綴和其他以 rds: 開頭的 RDS API 操作前綴。您只能對 IAM 資料庫身分驗證使用 rds-db: 字首和 rds-db:connect 動作。它們不適用於任何其他內容。

範例政策包含單一陳述式與下列元素:

  • Effect – 指定 Allow 以授權存取資料庫叢集。如果您未明確允許存取,預設將會拒絕存取。

  • Action – 指定 rds-db:connect 以允許連線至資料庫叢集

  • Resource – 指定 Amazon Resource Name (ARN) 以描述一個資料庫叢集中的一個資料庫帳戶。ARN 格式如下。

    arn:aws:rds-db:region:account-id:dbuser:DbClusterResourceId/db-user-name

    請在此格式中更換下列項目:

    • region 是資料庫叢集 AWS 的區域。在範例政策中, AWS 區域為 us-east-2

    • account-id 是資料庫叢集的 AWS 帳號。在此範例政策中,帳戶號碼是 1234567890。使用者的帳戶必須與資料庫叢集的帳戶相同。

      若要執行跨帳户存取權,請使用資料庫叢集帳戶中,上述的政策來建立 IAM 角色,並允許您的其他帳戶擔任該角色。

    • DbClusterResourceId 是資料庫叢集的識別符。此識別符對 AWS 區域是唯一的,絕不會變更。在此範例政策中,識別符是 cluster-ABCDEFGHIJKL01234

      若要在適用於 Amazon Aurora AWS Management Console 的 中尋找資料庫叢集資源 ID,請選擇資料庫叢集以查看其詳細資訊。然後選擇 Configuration (組態) 標籤。Resource ID (資源 ID) 顯示在 Configuration (組態) 區段中。

      或者,您可以使用 AWS CLI 命令列出目前 AWS 區域中所有資料庫叢集的識別符和資源 IDs,如下所示。

      aws rds describe-db-clusters --query "DBClusters[*].[DBClusterIdentifier,DbClusterResourceId]"
      注意

      如果您是透過 RDS Proxy 連線至資料庫,請指定代理資源 ID,例如 prx-ABCDEFGHIJKL01234。如需搭配 RDS Proxy 使用 IAM 資料庫驗證的相關資訊,請參閱使用 IAM 身分驗證連線到代理

    • db-user-name 是要與 IAM 身分驗證產生關聯的資料庫帳戶的名稱。在範例政策中,資料庫帳戶是 db_user

您可以建構其他 ARN 來支援各種存取模式。下列政策允許存取資料庫叢集中的兩個不同資料庫帳戶:

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:123456789012:dbuser:db-ABCDEFGHIJKL01234/jane_doe", "arn:aws:rds-db:us-east-2:123456789012:dbuser:db-ABCDEFGHIJKL01234/mary_roe" ] } ] }
JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:123456789012:dbuser:cluster-ABCDEFGHIJKL01234/jane_doe", "arn:aws:rds-db:us-east-2:123456789012:dbuser:cluster-ABCDEFGHIJKL01234/mary_roe" ] } ] }

下列政策使用「*」字元來比對特定 AWS 帳戶和 AWS 區域的所有資料庫叢集和資料庫帳戶。

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:1234567890:dbuser:*/*" ] } ] }

下列政策符合特定 AWS 帳戶和 AWS 區域的所有資料庫叢集。不過,此政策僅授權存取具有 jane_doe 資料庫帳戶的資料庫叢集

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:123456789012:dbuser:*/jane_doe" ] } ] }

使用者或角色只能存取資料庫使用者可存取的資料庫。例如,假設資料庫叢集有一個名為 dev 的資料庫,還有另一個名為 test 的資料庫。如果資料庫使用者 jane_doe 只能存取 dev,則任何以 jane_doe 使用者存取該資料庫叢集的使用者或角色,也只能存取 dev。其他資料庫物件同樣受此存取限制,例如資料表和檢視等。

管理員必須建立 IAM 政策,授予實體在其所需的指定資源上執行特定 API 操作的許可。管理員接著必須將這些政策連接至需要這些許可的許可集或角色。如需政策範例,請參閱 Amazon Aurora 以身分為基礎的政策範例

將政 IAM 政策連接到許可集或角色

在您建立 IAM 政策以允許資料庫身分驗證之後,您必須將該政策連接至許可集或角色。如需本主題的教學課程,請參閱《IAM 使用者指南》中的建立並連接您的第一個客戶受管原則

在您進行教學課程時,可使用本節所示的其中一個政策範例做為起點,並依您的需求進行自訂。在教學課程結束時,您會有一個具有連接政策且可使用 rds-db:connect 動作的許可集。

注意

您可以將多個許可集或角色映射至相同的資料庫使用者帳戶。例如,假設 IAM 政策指定下列資源 ARN。

arn:aws:rds-db:us-east-2:123456789012:dbuser:cluster-12ABC34DEFG5HIJ6KLMNOP78QR/jane_doe

如果您將此政策連接至 JaneBobDiego,則每個使用者都能使用 jane_doe 資料庫帳戶連線至指定的資料庫叢集