本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
授權存取 Amazon RDS Data API
使用者只有在獲得授權時,才能叫用 Amazon RDS Data API (資料 API) 操作。您可以連接定義其權限的 AWS Identity and Access Management (IAM) 政策,授予使用者使用資料 API 的許可。如果您使用的是 IAM 角色,也可以將政策連接至角色。 AWS 受管政策 AmazonRDSDataFullAccess
包含資料 API 的許可。
此AmazonRDSDataFullAccess
政策也包含使用者從中取得秘密值的許可 AWS Secrets Manager。使用者需要使用 Secrets Manager 來存放可在呼叫資料 API 時使用的秘密。使用秘密表示使用者不需要在對資料 API 的呼叫中包含其目標資源的資料庫登入資料。資料 API 會透明地呼叫 Secrets Manager,以允許 (或拒絕) 使用者的秘密請求。如需設定秘密以搭配資料 API 使用的資訊,請參閱 在 中存放資料庫登入資料 AWS Secrets Manager。
此AmazonRDSDataFullAccess
政策提供 資源的完整存取權 (透過資料 API)。您可以透過定義自己的政策來指定資源的 Amazon Resource Name (ARN),藉以縮小範圍。
例如,下列政策顯示使用者存取 ARN 所識別之資料庫叢集的資料 API 所需的最低許可範例。該政策包括存取 Secrets Manager 和取得使用者資料庫執行個體授權所需的許可。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SecretsManagerDbCredentialsAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "
arn:aws:secretsmanager:*:*:secret:rds-db-credentials/*
" }, { "Sid": "RDSDataServiceAccess", "Effect": "Allow", "Action": [ "rds-data:BatchExecuteStatement", "rds-data:BeginTransaction", "rds-data:CommitTransaction", "rds-data:ExecuteStatement", "rds-data:RollbackTransaction" ], "Resource": "arn:aws:rds:us-east-2:111122223333:cluster:prod
" } ] }
我們建議您針對政策陳述式中的「資源」元素使用特定 ARN (如範例所示),而不是萬用字元 (*)。
使用標籤型授權
RDS Data API (資料 API) 和 Secrets Manager 都支援標籤型授權。標籤是用來標示資源 (例如 RDS 叢集) 的索引鍵值配對,並具有額外的字串值,例如:
environment:production
environment:development
您可以將標籤套用至資源,以進行成本配置、作業支援、存取控制和許多其他原因。(如果您的資源上還沒有標籤,而您想要套用標籤,您可至標記 Amazon RDS 資源中進一步了解。) 您可以在政策陳述式中使用標籤來限制對以這些標籤標示之 RDS 叢集的存取。舉例來說,Aurora 資料庫叢集可能具有用來將其環境標識為生產或開發的標籤。
下列範例顯示如何在政策陳述式中使用標籤。此陳述式要求叢集和資料 API 要求中傳遞的秘密都有一個 environment:production
標籤。
以下是政策的套用方式:當使用者使用資料 API 進行呼叫時,請求會傳送至 服務。資料 API 首先會驗證在請求中傳遞的叢集 ARN 是否標記 environment:production
。然後,它會呼叫 Secrets Manager 擷取請求中的使用者秘密值。Secrets Manager 還會驗證使用者的秘密是否被標記為 environment:production
。如果有,資料 API 接著會使用使用者資料庫密碼的擷取值。最後,如果這也是正確的,則會為使用者成功地呼叫資料 API 請求。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SecretsManagerDbCredentialsAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "
arn:aws:secretsmanager:*:*:secret:rds-db-credentials/*
", "Condition": { "StringEquals": { "aws:ResourceTag/environment": [ "production" ] } } }, { "Sid": "RDSDataServiceAccess", "Effect": "Allow", "Action": [ "rds-data:*" ], "Resource": "arn:aws:rds:us-east-2:111122223333:cluster:*
", "Condition": { "StringEquals": { "aws:ResourceTag/environment": [ "production" ] } } } ] }
此範例顯示資料 API rds-data
和 Secrets Manager secretsmanager
的 和 個別動作。但是,您可以合併動作並以許多不同的方式定義標籤條件,以支援您的特定使用案例。如需詳細資訊,請參閱針對 Secrets Manager 使用以身分為基礎的政策 (IAM 政策)。
在政策的「條件」元素中,您可以從以下選項中選擇標籤鍵:
aws:TagKeys
aws:ResourceTag/${TagKey}
若要進一步了解資源標籤和如何使用 aws:TagKeys
,請參閱使用 AWS 資源標籤控制資源的存取。
注意
資料 API 和 都 AWS Secrets Manager 授權使用者。如果您沒有政策中定義之所有動作的許可,您會收到 AccessDeniedException
錯誤訊息。
在 中存放資料庫登入資料 AWS Secrets Manager
當您呼叫 Amazon RDS Data API (資料 API) 時,您可以在 Secrets Manager 中使用秘密來傳遞 Aurora 資料庫叢集的登入資料。若要這樣傳遞登入資料,請指定秘密的名稱或秘密的 Amazon Resource Name (ARN)。
在秘密中存放資料庫叢集登入資料
-
使用 Secrets Manager 建立秘密,其中含有 Aurora 資料庫叢集的登入資料。
如需說明,請參閱《AWS Secrets Manager 使用者指南》中的建立資料庫機密。
-
使用 Secrets Manager 主控台來檢視您建立之秘密的詳細資訊,或執行
aws secretsmanager describe-secret
AWS CLI 命令。記下秘密的名稱和 ARN。您可以在呼叫資料 API 時使用它們。
如需使用 Secrets Manager 的詳細資訊,請參閱 AWS Secrets Manager 使用者指南。
若要了解 Amazon Aurora 如何管理身分識別和存取管理,請參閱 Amazon Aurora 如何搭配 IAM使用。
如需有關建立 IAM 政策的詳細資訊,請參閱IAM 使用者指南中的建立 IAM 政策。如需有關將 IAM 政策新增給使用者的資訊,請參閱 IAM 使用者指南中的新增和移除 IAM 身分許可。