Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、ブログ記事
Amazon Redshift で ID プロバイダーを設定する
このセクションでは、ネイティブ ID プロバイダーフェデレーションの通信を確立するように ID プロバイダーと Amazon Redshift を設定する手順を示します。ID プロバイダーの有効なアカウントが必要です。Amazon Redshift を設定する前に、Redshift をアプリケーションとして ID プロバイダーに登録し、管理者の同意を付与します。
Amazon Redshift で次の手順を完了します。
-
SQL ステートメントを実行して、Azure アプリケーションメタデータの説明を含む ID プロバイダーを登録します。ID プロバイダーを Amazon Redshift で作成するには、パラメータ値を置き換えた後に次のコマンドを実行します。issuer、client_id、client_secret、および audience。これらのパラメータは Microsoft Azure AD 固有です。ID プロバイダー名を任意の名前に置き換え、名前空間を ID プロバイダーディレクトリからユーザーとロールを含む一意の名前に置き換えます。
CREATE IDENTITY PROVIDER oauth_standard TYPE azure NAMESPACE 'aad' PARAMETERS '{ "issuer":"https://sts.windows.net/2sdfdsf-d475-420d-b5ac-667adad7c702/", "client_id":"<client_id>", "client_secret":"BUAH~ewrqewrqwerUUY^%tHe1oNZShoiU7", "audience":["https://analysis.windows.net/powerbi/connector/AmazonRedshift"] }'タイプ
azureは、プロバイダーが特に Microsoft Azure AD との通信を容易にすることを示します。Azure は現在、唯一サポートされている ID プロバイダーです。-
issuer – トークンが受信されたときに信頼する発行者 ID。tenant_id の一意の識別子が発行者に付加されます。
-
client_id – ID プロバイダーに登録されたアプリケーションの一意の公開識別子。これは、アプリケーション ID と呼びます。
-
client_secret – ID プロバイダーと登録済みアプリケーションのみが認識するシークレット識別子、またはパスワード。
-
audience – Azure でアプリケーションに割り当てられているアプリケーション ID。
共有クライアントシークレットを使用する代わりに、ID プロバイダーを作成する場合、証明書、プライベートキー、およびプライベートキーのパスワードを指定するパラメータを設定できます。
CREATE IDENTITY PROVIDER example_idp TYPE azure NAMESPACE 'example_aad' PARAMETERS '{"issuer":"https://sts.windows.net/2sdfdsf-d475-420d-b5ac-667adad7c702/", "client_id":"<client_id>", "audience":["https://analysis.windows.net/powerbi/connector/AmazonRedshift"], "client_x5t":"<certificate thumbprint>", "client_pk_base64":"<private key in base64 encoding>", "client_pk_password":"test_password"}';プライベートキーのパスワードの client_pk_password は省略可能です。
-
-
オプション: Amazon Redshift で SQL コマンドを実行して、ユーザーとロールを事前に作成します。これにより、事前に権限を付与することが容易になります。Amazon Redshift でのロール名は次のようなものです。<Namespace>: <GroupName on Azure AD>。例えば、Microsoft Azure AD で名前空間が
aadで、ロール名はaad:rsgroupのrsgroupといういうグループを作成するとします。Amazon Redshift のユーザー名とロール名は、ID プロバイダーの名前空間のこのようなユーザー名とグループメンバーシップから定義されます。ロールとユーザーのマッピングには、
external_id値が最新であることを確認する検証が含まれます。外部 ID は、ID プロバイダー内のグループまたはユーザーの識別子にマップされます。たとえば、ロールの外部 ID は、対応する Azure AD グループ ID にマップされます。同様に、各ユーザーの外部 ID は ID プロバイダーの ID にマップされます。create role "aad:rsgroup"; -
要件に応じて、関連する権限をロールに付与します。例:
GRANT SELECT on all tables in schema public to role "aad:rsgroup"; -
さらに、特定のユーザーにアクセス権限を付与することもできます。
GRANT SELECT on table foo to aad:alice@example.comフェデレーション外部ユーザーのロールメンバーシップは、そのユーザーのセッションでのみ利用可能であることに注意してください。これはデータベースオブジェクト作成と密接に関連しています。例えば、フェデレーション外部ユーザーがビューやストアドプロシージャを作成した場合、その同じユーザーがそれらのオブジェクトの権限を他のユーザーやロールに委任することはできません。
名前空間の説明
名前空間は、ユーザーまたはロールを特定の ID プロバイダーにマッピングします。例えば、AWS IAM で作成したユーザーのプレフィックスは iam: です。このプレフィックスは、ユーザー名の衝突を防ぎ、複数の ID ストアをサポートできるようにします。aad 名前空間に登録されたアイデンティティソースからユーザー alice@example.com がログインしたが、そのユーザーが存在していない場合は Redshift でユーザー aad:alice@example.com が作成されます。ユーザーおよびロールの名前空間には、クラスターに関連付けられた一意の識別子であるAmazon Redshift クラスター名前空間とは異なる機能があることに注意してください。