Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊,請參閱部落格文章
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立暫時性 IAM 憑證
您將在本節中了解如何設定系統以產生暫時性 IAM 型資料庫使用者登入資料,並使用新的登入資料來登入資料庫。
高階的程序流程如下:
-
(選用) 您可整合 IAM 身分驗證和第三方身分提供者 (IdP),對存取 Amazon Redshift 資料庫的使用者進行驗證。
-
(選用) 若要利用 IdP 使用 IAM 身分驗證,您需要在 IdP 應用程式中定義宣告規則,將組織中的使用者或群組映射到 IAM 角色。您也可選擇性加入屬性元素,以設定
GetClusterCredentials參數。 -
步驟 3:建立具有呼叫 GetClusterCredentialsWithIAM 或 GetClusterCredentials 許可的 IAM 角色 GetClusterCredentials
SQL 用戶端應用程式在呼叫
GetClusterCredentials操作時會擔任使用者。如果已建立用於身分提供者存取的 IAM 角色,您可為該角色新增必要的許可。 -
(選用) 根據預設,如果使用者名稱不存在,
GetClusterCredentials會傳回登入資料以建立新的使用者。您也可以選擇指定使用者登入時會加入的使用者群組。根據預設,資料庫使用者將加入 PUBLIC 群組。 -
步驟 5:設定 JDBC 或 ODBC 連線使用 IAM 登入資料
若要連線至 Amazon Redshift 資料庫,請將 SQL 用戶端設定為使用 Amazon Redshift JDBC 或 ODBC 驅動程式。
步驟 1:建立適用於 IAM 單一登入存取的 IAM 角色
如果您未使用身分提供者進行單一登入存取,可略過此步驟。
如果您已在 外部管理使用者身分AWS,您可以透過整合 IAM 身分驗證和第三方 SAML-2.0 身分提供者 (IdP) 來驗證使用者對 Amazon Redshift 資料庫的存取。
如需詳細資訊,請參閱《IAM 使用者指南》中的身分提供者與聯合。
在使用 Amazon Redshift IdP 身分驗證之前,請先建立 AWSSAML 身分提供者。您可以在 IAM 主控台中建立 IdP,以通知 AWSIdP 及其組態。這樣做會在AWS您的帳戶和 IdP 之間建立信任。如需建立角色的步驟,請參閱《IAM 使用者指南》中的為 SAML 2.0 聯合建立角色 (主控台)。
步驟 2:設定 IdP 的 SAML 聲明
建立 IAM 身分後,請在 IdP 應用程式中定義宣告規則,以將組織中的使用者或群組映射到 IAM 角色。如需詳細資訊,請參閱《IAM 使用者指南》中的的為身分驗證回應設定 SAML 聲明。
如果您選擇使用選用的 GetClusterCredentials 參數 DbUser、AutoCreate、和 DbGroups,則有兩個選項。您可以使用 JDBC 或 ODBC 連線來設定參數值,或將 SAML 屬性元素新增至 IdP 以設定數值。如需 DbUser、AutoCreate 和 DbGroups 參數的詳細資訊,請參閱 步驟 5:設定 JDBC 或 ODBC 連線使用 IAM 登入資料。
注意
如果您使用 IAM 政策變數 ${redshift:DbUser},如 GetClusterCredentials 的資源政策中所述,則會以 API 操作的請求內容所擷取的值取代 DbUser 的值。Amazon Redshift 驅動程式使用連線 URL 提供的 DbUser 變數的值,而非提供作為 SAML 屬性的值。
為了協助保護此組態的安全,建議您在 IAM 政策中使用條件,以使用 RoleSessionName 來驗證 DbUser 值。您可以在範例 8:使用 GetClusterCredentials 的 IAM 政策中找到如何使用 IAM 政策來設定條件的範例。
若要設定 IdP 以設定 DbUser、AutoCreate 和 DbGroups 參數,請包含下列 Attribute 元素:
-
Name屬性設定為 "https://redshift.amazon.com/SAML/Attributes/DbUser" 的Attribute元素將
AttributeValue設定為即將連線至 Amazon Redshift 資料庫的使用者名稱。AttributeValue元素中的值長度必須為小寫,開頭需為英文字母,只能包含英數字元、底線 (「_」)、加號 (「+」)、點號 (「.」)、At (「@」) 或連字號 (「-」),且不得超過 128 個字元。使用者名稱的通常為使用者 ID (例如,bobsmith) 或電子郵件地址 (例如,bobsmith@example.com)。該值不能包含空格 (例如,Bob Smith 之類的使用者顯示名稱)。<Attribute Name="https://redshift.amazon.com/SAML/Attributes/DbUser"> <AttributeValue>user-name</AttributeValue> </Attribute> -
名稱屬性設定為「https://redshift.amazon.com/SAML/Attributes/AutoCreate」的屬性元素
如果尚不存在,將 AttributeValue 元素設定為 true,即可建立新的資料庫使用者。將 AttributeValue 設定為 false,指定資料庫使用者必須存在於 Amazon Redshift 資料庫中。
<Attribute Name="https://redshift.amazon.com/SAML/Attributes/AutoCreate"> <AttributeValue>true</AttributeValue> </Attribute> -
Name屬性設定為 "https://redshift.amazon.com/SAML/Attributes/DbGroups" 的Attribute元素此元素包含一或多個
AttributeValue元素。將每個AttributeValue元素設定為DbUser在連線至 Amazon Redshift 資料庫之工作階段期間將加入的資料庫群組名稱。<Attribute Name="https://redshift.amazon.com/SAML/Attributes/DbGroups"> <AttributeValue>group1</AttributeValue> <AttributeValue>group2</AttributeValue> <AttributeValue>group3</AttributeValue> </Attribute>
步驟 3:建立具有呼叫 GetClusterCredentialsWithIAM 或 GetClusterCredentials 許可的 IAM 角色 GetClusterCredentials
您的 SQL 用戶端需要授權,才能代表您呼叫 GetClusterCredentialsWithIAM或 GetClusterCredentials操作。若要提供授權,您應建立使用者或角色,並附加授予必要許可的政策。這兩個操作都可用來取得叢集登入資料,但其身分驗證方法不同。 GetClusterCredentialsWithIAM使用 IAM 角色,自動建立映射至角色的資料庫使用者,這有助於管理 IAM 角色層級的許可,同時為資料庫中指定的使用者名稱GetClusterCredentials提供登入資料。
建立具有呼叫 GetClusterCredentialsWithIAM 許可的 IAM 角色
-
使用 IAM 服務建立使用者或角色。也可使用現有的使用者或角色,例如,如果已建立用於身分提供者存取的 IAM 角色,您可將必要的 IAM 政策連接至該角色。
-
連接具有呼叫
redshift:GetClusterCredentialsWithIAM操作許可的許可政策。下列政策範例顯示允許特定叢集和資料庫、叢集中的任何資料庫,以及任何叢集中的任何資料庫操作的選項。{ "Version": "2012-10-17", "Statement": [ { "Sid": "SpecificClusterAndDBName", "Effect": "Allow", "Action": "redshift:GetClusterCredentialsWithIAM", "Resource": [ "arn:aws:redshift:us-east-1:123456789012:dbname:testcluster/testdatabase" ] }, { "Sid": "SpecificClusterAndAnyDBName", "Effect": "Allow", "Action": "redshift:GetClusterCredentialsWithIAM", "Resource": "arn:aws:redshift:us-east-1:123456789012:dbname:examplecluster/*", }, { "Sid": "AnyClusterAnyDatabase", "Effect": "Allow", "Action": "redshift:GetClusterCredentialsWithIAM", "Resource": "*" } ] }
建立具有呼叫 GetClusterCredentials 之許可的 IAM 角色
-
使用 IAM 服務建立使用者或角色。也可使用現有的使用者或角色,例如,如果已建立用於身分提供者存取的 IAM 角色,您可將必要的 IAM 政策連接至該角色。
-
連接具有呼叫
redshift:GetClusterCredentials操作許可的許可政策。根據指定的選用參數而定,您也能在政策中允許或限制其他動作和資源:-
若要允許 SQL 用戶端擷取叢集 ID、AWS區域和連接埠,請包含使用 Redshift 叢集資源呼叫
redshift:DescribeClusters操作的許可。 -
如果使用
AutoCreate選項,請在dbuser資源中包含呼叫redshift:CreateClusterUser的許可。以下 Amazon Resource Name (ARN) 會指定 Amazon Redshiftdbuser。將cluster-name、account-id和 取代為您的AWS區域、帳戶和叢集的值。針對region,指定用來登入叢集資料庫的使用者名稱。dbuser-namearn:aws:redshift:region:account-id:dbuser:cluster-name/dbuser-name -
(選用) 新增 ARN 以指定 Amazon Redshift
dbname資源,格式如下。將cluster-name、account-id和 取代為您的AWS區域、帳戶和叢集的值。針對region,指定使用者將登入的資料庫名稱。database-namearn:aws:redshift:region:account-id:dbname:cluster-name/database-name -
如果您使用
DbGroups選項,請包含對 Amazon Redshiftdbgroup資源呼叫redshift:JoinGroup操作的許可,格式如下。將cluster-name、account-id和 取代為您的AWS區域、帳戶和叢集的值。針對region,指定使用者登入時要加入的使用者群組名稱。dbgroup-namearn:aws:redshift:region:account-id:dbgroup:cluster-name/dbgroup-name
-
如需詳細資訊和範例,請參閱 GetClusterCredentials 的資源政策。
步驟 4:建立資料庫使用者和資料庫群組
您可選擇性建立資料庫使用者,以用來登入叢集資料庫。如果您為現有的使用者建立暫時性使用者登入資料,您可停用使用者的密碼,以強制使用者用暫時性密碼登入。或者,您也可使用 GetClusterCredentials Autocreate 選項自動建立新的資料庫使用者。
您可建立資料庫使用者群組並加入允許 IAM 資料庫使用者於登入時加入的許可。呼叫 GetClusterCredentials 操作時,您可指定新使用者於登入時加入的使用者群組名稱清單。這些群組成員資格僅適用於使用指定請求產生之登入資料所建立的工作階段。
建立資料庫使用者和資料庫群組
-
登入 Amazon Redshift 資料庫並使用 CREATE USER 建立資料庫使用者,或使用 ALTER USER 來變更現有的使用者。
-
選擇性地指定 PASSWORD DISABLE 選項,防止使用者使用密碼。停用使用者密碼後,使用者只能使用暫時性憑證登入。如果未停用密碼,使用者可用其密碼或暫時性憑證登入。您無法停用超級使用者的密碼。
如果使用者想要與 AWS外部互動,則需要程式設計存取AWS 管理主控台。授予程式設計存取權的方式取決於正在存取的使用者類型AWS。
若要授予使用者程式設計存取權,請選擇下列其中一個選項。
哪個使用者需要程式設計存取權? 到 根據 IAM (建議) 使用主控台登入資料做為臨時登入資料,以簽署對 AWS CLI、AWSSDKs程式設計請求。AWSAPIs 請依照您要使用的介面所提供的指示操作。
-
如需 AWS CLI,請參閱AWS Command Line Interface《 使用者指南》中的登入以進行AWS本機開發。
-
AWSSDKs,請參閱 AWSSDKs 和工具參考指南中的登入以進行AWS本機開發。
人力資源身分
(IAM Identity Center 中管理的使用者)
使用暫時登入資料簽署對 AWS CLI、AWSSDKs程式設計請求。 AWSAPIs 請依照您要使用的介面所提供的指示操作。
-
如需 AWS CLI,請參閱AWS Command Line Interface《 使用者指南》中的設定AWS CLI要使用AWS IAM Identity Center的 。
-
AWSSDKs、工具和 AWSAPIs,請參閱 AWSSDK 和工具參考指南中的 SDKsIAM Identity Center 身分驗證。
IAM 使用暫時登入資料簽署對 AWS CLI、AWSSDKs程式設計請求。 AWSAPIs 遵循《IAM 使用者指南》中將臨時登入資料與AWS資源搭配使用的指示。 IAM (不建議使用)
使用長期登入資料來簽署對 AWS CLI、AWSSDKs程式設計請求。AWSAPIs請依照您要使用的介面所提供的指示操作。
-
如需 AWS CLI,請參閱AWS Command Line Interface《 使用者指南》中的使用 IAM 使用者憑證進行身分驗證。
-
AWSSDKs和工具,請參閱 AWSSDKs和工具參考指南中的使用長期憑證進行身分驗證。
-
對於 AWSAPIs,請參閱《IAM 使用者指南》中的管理 IAM 使用者的存取金鑰。
以下範例會建立停用密碼的使用者。
create user temp_creds_user password disable;以下範例會停用現有使用者的密碼。
alter user temp_creds_user password disable; -
-
使用 CREATE GROUP 建立資料庫使用者群組。
-
使用 GRANT 命令定義群組的存取權限。
步驟 5:設定 JDBC 或 ODBC 連線使用 IAM 登入資料
您可以使用 Amazon Redshift JDBC 或 ODBC 驅動程序設定您的 SQL 用戶端。此驅動程式會管理建立資料庫使用者憑證,然後在 SQL 用戶端與 Amazon Redshift 資料庫之間建立連線的程序。
如果您使用身分提供者進行身分驗證,請指定登入資料供應商外掛程式的名稱。Amazon Redshift JDBC 和 ODBC 驅動程式包含下列以 SAML 為基礎之身分提供者的外掛程式:
-
Active Directory Federation Services (AD FS)
-
PingOne
-
Okta
-
Microsoft Azure AD
如需將 Microsoft Azure AD 設定為身分提供者的步驟,請參閱 設定 JDBC 或 ODBC 單一登入身分驗證。
設定 JDBC 連線使用 IAM 登入資料
-
從 設定適用於 Amazon Redshift 的 JDBC 驅動器 2.x 版的連線 頁面下載最新的 Amazon Redshift JDBC 驅動程式。
-
使用下列其中一種格式的 IAM 登入資料選項建立 JDBC URL。若要使用 IAM 身分驗證,請將
iam:新增至 Amazon Redshift JDBC URL 的jdbc:redshift:後方,如下列範例所示。jdbc:redshift:iam://新增
cluster-name、region和account-id。JDBC 驅動程式使用您的 IAM 帳戶資訊和叢集名稱來擷取叢集 ID 和AWS區域。若要這樣做,您的使用者或角色必須具備為指定叢集呼叫redshift:DescribeClusters操作的許可。如果您的使用者或角色沒有呼叫redshift:DescribeClusters操作的許可,請包含叢集 ID、AWS區域和連接埠,如下列範例所示。連接埠號碼是選用的。jdbc:redshift:iam://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev -
新增 JDBC 選項,以提供 IAM 登入資料。您可使用不同的 JDBC 選項組合來提供 IAM 登入資料。如需詳細資訊,請參閱用於建立資料庫使用者憑證的 JDBC 和 ODBC 選項。
以下 URL 指定使用者的 AccessKeyID 和 SecretAccessKey。
jdbc:redshift:iam://examplecluster:us-west-2/dev?AccessKeyID=AKIAIOSFODNN7EXAMPLE&SecretAccessKey=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY以下範例指定包含 IAM 登入資料的命名設定檔。
jdbc:redshift:iam://examplecluster:us-west-2/dev?Profile=user2 -
新增 JDBC 驅動程式用來呼叫
GetClusterCredentialsAPI 操作的 JDBC 選項。如果您用程式設計的方式呼叫GetClusterCredentialsAPI 操作,請勿加入這些選項。下列範例包含 JDBC
GetClusterCredentials選項。jdbc:redshift:iam://examplecluster:us-west-2/dev?plugin_name=com.amazon.redshift.plugin.AzureCredentialsProvider&UID=user&PWD=password&idp_tenant=my_tenant&client_secret=my_secret&client_id=my_id
設定 ODBC 連線使用 IAM 登入資料
在以下程序中,您只能尋找設定 IAM 身分驗證的步驟。如需使用標準身分驗證 (使用資料庫使用者名稱和密碼) 的步驟,請參閱 設定 Amazon Redshift ODBC 驅動程式 2.x 版連線。
-
安裝並設定您的作業系統適用的 Amazon Redshift OBDC 驅動程式。如需詳細資訊,請參閱 設定 Amazon Redshift ODBC 驅動程式 2.x 版連線 頁面。
重要
Amazon Redshift ODBC 驅動程式必須為 1.3.6.1000 版或更新版本。
-
依照您作業系統適用的步驟,設定連線設定。
-
在 Microsoft Windows 作業系統中,存取 Amazon Redshift ODBC Driver DSN Setup 視窗。
-
在 Connection Settings (連線設定) 下,輸入下列資訊:
-
Data Source Name (資料來源名稱)
-
Server (伺服器) (選用)
-
Port (連接埠) (選用)
-
資料庫
如果您的使用者或角色具有呼叫
redshift:DescribeClusters操作的許可,則只需要資料來源名稱和資料庫。Amazon Redshift 會使用 ClusterId 和區域,透過呼叫DescribeCluster操作來取得伺服器和連接埠。如果您的使用者或角色不具有呼叫
redshift:DescribeClusters操作的許可,請指定伺服器和連接埠。 -
-
在 Authentication (身分驗證) 下方,選擇 Auth Type (驗證類型) 的值。
針對每個驗證類型,輸入下列的值:
- AWS設定檔
-
輸入下列資訊:
-
ClusterID (ClusterID)
-
區域
-
Profile name (設定檔名稱)
在包含 ODBC AWS連線選項值的組態檔案中,輸入設定檔的名稱。如需詳細資訊,請參閱使用組態設定檔。
(選用) 提供 ODBC 驅動程式用來呼叫
GetClusterCredentialsAPI 操作之選項的詳細資訊:-
DbUser (DbUser)
-
User AutoCreate (使用者 AutoCreate)
-
DbGroups (DbGroups)
如需詳細資訊,請參閱用於建立資料庫使用者憑證的 JDBC 和 ODBC 選項。
-
- IAM 登入資料
-
輸入下列資訊:
-
ClusterID (ClusterID)
-
區域
-
AccessKeyID (AccessKeyID) 和 SecretAccessKey (SecretAccessKey)
IAM 資料庫身分驗證所設定之 IAM 角色或使用者的存取金鑰 ID 和私密存取金鑰。
-
SessionToken (SessionToken)
SessionToken (SessionToken) 對於擁有暫時性登入資料的 IAM 角色來說為必填。如需詳細資訊,請參閱暫時性安全登入資料。
提供 ODBC 驅動程式用來呼叫
GetClusterCredentialsAPI 操作之選項的詳細資訊:-
DbUser (DbUser) (必填)
-
User AutoCreate (使用者 AutoCreate) (選用)
-
DbGroups (DbGroups) (選用)
如需詳細資訊,請參閱用於建立資料庫使用者憑證的 JDBC 和 ODBC 選項。
-
- 身分提供者:AD FS
-
針對使用 AD FS 的 Windows 整合式身分驗證,請讓 User (使用者) 和 Password (密碼) 保持空白。
提供 IdP 詳細資訊:
-
IdP Host (IdP 主機)
企業身分提供商主機的名稱。該名稱不得包含任何斜線 (/)。
-
IdP Port (IdP 連接埠) (選用)
身分提供者使用的連接埠。預設為 443。
-
Preferred Role (偏好的角色)
IAM 角色的 Amazon Resource Name (ARN),來自 SAML 聲明中
Role屬性的多值AttributeValue元素。若要尋找偏好角色適用的值,請洽詢 IdP 管理員。如需詳細資訊,請參閱步驟 2:設定 IdP 的 SAML 聲明。
(選用) 提供 ODBC 驅動程式用來呼叫
GetClusterCredentialsAPI 操作之選項的詳細資訊:-
DbUser (DbUser)
-
User AutoCreate (使用者 AutoCreate)
-
DbGroups (DbGroups)
如需詳細資訊,請參閱用於建立資料庫使用者憑證的 JDBC 和 ODBC 選項。
-
- 身分提供者:PingFederate
-
針對 User (使用者) 和 Password (密碼),輸入 IdP 的使用者名稱和密碼。
提供 IdP 詳細資訊:
-
IdP Host (IdP 主機)
企業身分提供商主機的名稱。該名稱不得包含任何斜線 (/)。
-
IdP Port (IdP 連接埠) (選用)
身分提供者使用的連接埠。預設為 443。
-
Preferred Role (偏好的角色)
IAM 角色的 Amazon Resource Name (ARN),來自 SAML 聲明中
Role屬性的多值AttributeValue元素。若要尋找偏好角色適用的值,請洽詢 IdP 管理員。如需詳細資訊,請參閱步驟 2:設定 IdP 的 SAML 聲明。
(選用) 提供 ODBC 驅動程式用來呼叫
GetClusterCredentialsAPI 操作之選項的詳細資訊:-
DbUser (DbUser)
-
User AutoCreate (使用者 AutoCreate)
-
DbGroups (DbGroups)
如需詳細資訊,請參閱用於建立資料庫使用者憑證的 JDBC 和 ODBC 選項。
-
- 身分提供者:Okta
-
針對 User (使用者) 和 Password (密碼),輸入 IdP 的使用者名稱和密碼。
提供 IdP 詳細資訊:
-
IdP Host (IdP 主機)
企業身分提供商主機的名稱。該名稱不得包含任何斜線 (/)。
-
IdP Port (IdP 連接埠)
Okta 不會使用此值。
-
Preferred Role (偏好的角色)
IAM 角色的 Amazon Resource Name (ARN),來自 SAML 聲明中
Role屬性的AttributeValue元素。若要尋找偏好角色適用的值,請洽詢 IdP 管理員。如需詳細資訊,請參閱步驟 2:設定 IdP 的 SAML 聲明。 -
Okta App ID (Okta 應用程式 ID)
Okta 應用程式的 ID。Okta 應用程式嵌入連結中「amazon_aws」後方的 App ID 值。請洽詢 IdP 管理員,以取得此值。
(選用) 提供 ODBC 驅動程式用來呼叫
GetClusterCredentialsAPI 操作之選項的詳細資訊:-
DbUser (DbUser)
-
User AutoCreate (使用者 AutoCreate)
-
DbGroups (DbGroups)
如需詳細資訊,請參閱用於建立資料庫使用者憑證的 JDBC 和 ODBC 選項。
-
- 身分提供者:Azure AD
-
針對 User (使用者) 和 Password (密碼),輸入 IdP 的使用者名稱和密碼。
針對叢集 ID 和區域,輸入您的 Amazon Redshift 叢集的叢集 ID 和 AWS 區域。
針對資料庫,輸入您為 Amazon Redshift 叢集建立的資料庫。
提供 IdP 詳細資訊:
-
IdP Tenant (IdP 租用戶)
用於 Azure AD 的租用戶。
-
Azure Client Secret (Azure 用戶端密碼)
Azure 中 Amazon Redshift 企業應用程式的用戶端密碼。
-
Azure Client ID (Azure 用戶端 ID)
Azure 中 Amazon Redshift 企業應用程式的用戶端 ID (應用程式 ID)。
(選用) 提供 ODBC 驅動程式用來呼叫
GetClusterCredentialsAPI 操作之選項的詳細資訊:-
DbUser (DbUser)
-
User AutoCreate (使用者 AutoCreate)
-
DbGroups (DbGroups)
如需詳細資訊,請參閱用於建立資料庫使用者憑證的 JDBC 和 ODBC 選項。
-
-