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

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

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

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

注意

若要進一步了解 IAM 政策,請參閱Amazon RDS 的 Identity and access management

以下範例政策可讓使用者利用 IAM 資料庫身分驗證來連接資料庫執行個體

{ "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" ] } ] }
重要

具有管理員許可的使用者可以存取資料庫執行個體,而不需 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:DbiResourceId/db-user-name

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

    • region 是資料庫執行個體的 AWS 區域。在此範例政策中,AWS 區域是 us-east-2

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

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

    • DbiResourceId 是資料庫執行個體的識別符。此為 AWS 區域的唯一識別符,且永不變更。在此範例政策中,識別符是 db-ABCDEFGHIJKL01234

      若要在 AWS Management Console 中尋找 Amazon RDS 的資料庫執行個體資源 ID,請選擇資料庫執行個體 以查看其詳細資訊。然後選擇 Configuration (組態) 標籤。Resource ID (資源 ID) 顯示在 Configuration (組態) 區段中。

      或是您可以使用 AWS CLI 命令,列出目前 AWS 區域中所有資料庫執行個體的識別符及資源 ID,如下所示。

      aws rds describe-db-instances --query "DBInstances[*].[DBInstanceIdentifier,DbiResourceId]"

      若您使用的是 Amazon Aurora,請指定 DbClusterResourceId 而非 DbiResourceId。如需詳細資訊,請參閱《Amazon Aurora 使用者指南》中的建立並使用 IAM 政策進行 IAM 資料庫存取

      注意

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

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

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

{ "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" ] } ] }

以下政策使用 "*" 字元,以符合特定 AWS 帳戶和 AWS 區域的所有資料庫執行個體和資料庫帳戶。

{ "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 資料庫帳戶的資料庫執行個體

{ "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 RDS 以身分為基礎的政策範例

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

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

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

注意

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

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

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