Amazon Web Services ブログ
Amazon Redshift のユーザー管理を AWS IAM Identity Center に移行して認証を最新化する
本記事は 2025 年 8 月 27 日 に公開された「Modernize Amazon Redshift authentication by migrating user management to AWS IAM Identity Center」を翻訳したものです。
Amazon Redshift は、構造化データと半構造化データの両方を高度な SQL クエリで分析できるクラウドベースのデータウェアハウスです。フルマネージドサービスとして、高いパフォーマンスとスケーラビリティを提供しながら、データウェアハウスに保存されたデータへの安全なアクセスを可能にします。世界中の組織が Amazon Redshift を使用して大規模なデータセットを処理し、分析機能を強化し、ステークホルダーに価値あるビジネスインテリジェンスを提供しています。
AWS IAM Identity Center は、Amazon Q Developer を含む AWS ツールへのワークフォースアクセスを制御するための推奨プラットフォームです。既存の ID プロバイダー (IdP) への単一接続を可能にし、AWS アプリケーション全体でユーザーの統一ビューを作成し、信頼された ID の伝播を適用してシームレスで一貫したエクスペリエンスを実現します。
Amazon Redshift のデータには、ローカルユーザーまたは外部ユーザーを使用してアクセスできます。Amazon Redshift のローカルユーザーは、Redshift クラスター内で直接作成および管理されるデータベースユーザーアカウントです。Amazon Redshift は IAM Identity Center と統合されており、信頼された ID の伝播をサポートしているため、Microsoft Entra ID (Azure AD)、Okta、Ping、OneLogin などのサードパーティ IdP を使用するか、IAM Identity Center を ID ソースとして使用できます。Amazon Redshift との IAM Identity Center 統合は、一元化された認証と SSO 機能をサポートし、マルチアカウント環境全体でのアクセス管理を簡素化します。組織の規模が拡大するにつれて、クロスサービス統合と一元化されたアクセス管理のために外部ユーザーを使用することが推奨されます。
本記事では、RedshiftIDCMigration ユーティリティを使用して、ローカル Redshift ユーザー管理を IAM Identity Center のユーザーとグループにスムーズに移行する方法を紹介します。
ソリューションの概要
次の図はソリューションアーキテクチャです。

RedshiftIDCMigration ユーティリティは、以下のアクティビティを実行することで、ローカル Redshift ユーザー、グループ、ロールの IAM Identity Center インスタンスへの移行を加速します。
- 指定された Redshift インスタンス内のすべてのローカルユーザーに対して、IAM Identity Center にユーザーを作成します。
- 指定された Redshift インスタンス内のすべてのグループまたはロールに対して、IAM Identity Center にグループを作成します。
- Redshift インスタンス内の既存の割り当てに従って、IAM Identity Center でユーザーをグループに割り当てます。
- IAM Identity Center で作成されたグループに対応する IAM Identity Center ロールを Redshift インスタンスに作成します。
- ローカルグループとロールに付与されている現在の権限に基づいて、Redshift インスタンス内の IAM Identity Center ロールに権限を付与します。
前提条件
ユーティリティを実行する前に、以下の準備が必要です。
- アカウントで IAM Identity Center を有効化します。
- ブログ記事「Integrate Identity Provider (IdP) with Amazon Redshift Query Editor V2 and SQL Client using AWS IAM Identity Center for seamless Single Sign-On」の手順に従います (具体的には、ステップ 1〜8 に従い、ステップ 4 と 6 はスキップします)。
- IAM Identity Center アプリケーションの割り当てを設定します。
- IAM Identity Center コンソールで、Application Assignments と Applications を選択します。
- アプリケーションを選択し、Actions ドロップダウンメニューから Edit details を選択します。
- User and group assignments で、Do not require assignments を選択します。この設定により、特定のデータアクセス権限を設定せずに Amazon Redshift 接続をテストできます。
- Amazon Elastic Compute Cloud (Amazon EC2) または AWS CloudShell から管理者アクセス権を持つ IAM Identity Center 認証を設定します。
ユーティリティは EC2 インスタンスまたは CloudShell から実行されます。EC2 インスタンスを使用する場合、IAM ロールがインスタンスにアタッチされます。実行時に使用する IAM ロールに以下の権限があることを確認してください (ない場合は、これらの権限を持つ新しいポリシーを作成し、IAM ロールにアタッチしてください)。
- Amazon Redshift 権限 (サーバーレスの場合):
- Amazon Redshift 権限 (プロビジョニング済みの場合):
- Amazon Simple Storage Service (Amazon S3) 権限:
- Identity store 権限:
アーティファクト
GitHub リポジトリから以下のユーティリティアーティファクトをダウンロードします。
- idc_redshift_unload_indatabase_groups_roles_users.py – ユーザー、グループ、ロール、およびそれらの関連付けをアンロードする Python スクリプト。
- redshift_unload.ini – 上記のスクリプトで使用される設定ファイル。Redshift データウェアハウスの詳細とファイルをアンロードする Amazon S3 の場所を読み取ります。
- idc_add_users_groups_roles_psets.py – IAM Identity Center でユーザーとグループを作成し、IAM Identity Center でユーザーをグループに関連付ける Python スクリプト。
- idc_config.ini – 上記のスクリプトで使用される設定ファイル。IAM Identity Center の詳細を読み取ります。
- vw_local_ugr_to_idc_urgr_priv.sql – Amazon Redshift で 2 つのタスクを実行する SQL ステートメントを生成するスクリプト:
- IAM Identity Center グループ名と完全に一致するロールを作成し、指定されたプレフィックスを追加します。
- 新しく作成された Redshift ロールに適切な権限を付与します。
テストシナリオ
テストケースは、実践的な経験を提供し、ユーティリティの機能に慣れることを目的としています。シナリオは、階層的なネストされたロールシステムを中心に構成されており、オブジェクトレベルの権限がテクニカルロールに割り当てられることから始まります。テクニカルロールはビジネスロールに割り当てられます。最後に、ビジネスロールが個々のユーザーに付与されます。テスト環境を強化するために、シナリオにはユーザーグループも組み込まれています。次の図は階層を示しています。

データセットの作成
create schema コマンドを使用して、Redshift データベースに 2 つの別々のスキーマ (tickit と tpcds) を設定します。次に、tickit と tpcds サンプルデータセットを使用して、各スキーマにいくつかのテーブルを作成してデータを投入します。
必要に応じて、copy コマンドに適切な IAM ロールの Amazon リソースネーム (ARN) を指定してください。
ユーザーの作成
以下のコードでユーザーを作成します。
ビジネスロールの作成
以下のコードでビジネスロールを作成します。
テクニカルロールの作成
以下のコードでテクニカルロールを作成します。
グループの作成
以下のコードでグループを作成します。
テクニカルロールへの権限付与
テクニカルロールに権限を付与するには、以下を使用します。
ビジネスロールへのテクニカルロールの付与
テクニカルロールをビジネスロールに付与するには、以下を使用します。
ユーザーへのビジネスロールの付与
ビジネスロールをユーザーに付与するには、以下を使用します。
グループへの権限付与
グループに権限を付与するには、以下を使用します。
グループへのユーザー追加
グループにユーザーを追加するには、以下を使用します。
ソリューションのデプロイ
ソリューションをデプロイするには、以下の手順を完了します。
redshift_unload.iniで Redshift クラスターまたはサーバーレスエンドポイントの詳細と Amazon S3 の場所を更新します。- cluster_type =
provisionedまたはserverless - cluster_id =
${cluster_identifier}(cluster_typeがprovisionedの場合に必要) - db_user =
${database_user} - db_name =
${database_name} - host =
${host_url}(cluster_typeがprovisionedの場合に必要) - port =
${port_number} - workgroup_name =
${workgroup_name}(cluster_typeがserverlessの場合に必要) - region =
${region} - s3_bucket =
${S3_bucket_name} - roles =
roles.csv - users =
users.csv - role_memberships =
role_memberships.csv
- cluster_type =
idc_config.iniで IAM Identity Center の詳細を更新します。- region =
${region} - account_id =
${account_id} - identity_store_id =
${identity_store_id}(IAM Identity Center コンソールの Settings ページで確認可能) - instance_arn =
${iam_identity_center_instance_arn}(IAM Identity Center コンソールの Settings ページで確認可能) - permission_set_arn =
${permission_set_arn} - assign_permission_set =
TrueまたはFalse(permission_set_arnが定義されている場合はTrue) - s3_bucket =
${S3_bucket_name} - users_file =
users.csv - roles_file =
roles.csv - role_memberships_file =
role_memberships.csv
- region =
- CloudShell または Amazon Redshift に接続できる EC2 インスタンスにディレクトリを作成します。
- 2 つの .ini ファイルをコピーし、Python スクリプトをそのディレクトリにダウンロードします。
- CloudShell または EC2 インスタンスから以下のコマンドを実行します。
- CloudShell または EC2 インスタンスから以下のコマンドを実行します。
- Amazon Redshift クエリエディタ v2 または任意の SQL クライアントを使用して、スーパーユーザー認証情報で Redshift クラスターに接続します。
vw_local_ugr_to_idc_urgr_priv.sqlファイルの SQL をコピーし、クエリエディタで実行してvw_local_ugr_to_idc_urgr_privビューを作成します。
- 以下の SQL コマンドを実行して、ロールと権限を作成する SQL ステートメントを生成します。
例えば、以下の既存の権限付与を考えてみましょう。
これらの権限付与は以下のコードに変換されます。
idc_based_grants列のステートメントを確認します。
包括的な権限リストではない可能性があるため、慎重に確認してください。- すべてが正しければ、SQL クライアントからステートメントを実行します。
プロセスが完了すると、以下の設定が完了しているはずです。
- IAM Identity Center に Amazon Redshift から新しく作成されたユーザーが含まれている
- Redshift のローカルグループとロールが IAM Identity Center のグループとして作成されている
- IAM Identity Center で作成されたグループに対応する新しいロールが Amazon Redshift に確立されている
- 新しく作成された Redshift ロールに適切な権限が割り当てられている
クエリエディタを使用して IAM Identity Center で Amazon Redshift に接続する際に問題が発生した場合は、「Troubleshooting connections from Amazon Redshift query editor v2」を参照してください。
考慮事項
このソリューションを使用する際は、以下の点を考慮してください。
- 執筆時点では、AWS Lake Formation での権限作成は対象外です。
- IAM Identity Center と IdP の統合設定は、このユーティリティの対象外です。ただし、
vw_local_ugr_to_idc_urgr_priv.sqlビューを使用して、IAM Identity Center を通じて渡される IdP ユーザーとグループにロールを作成し、権限を付与できます。 - ローカルユーザー ID に直接権限を付与している場合 (グループやロールを使用していない場合)、IAM Identity Center 統合のためにロールベースの権限アプローチに変更する必要があります。ロールを作成し、ユーザーに直接権限を付与する代わりにロールを使用して権限を付与してください。
クリーンアップ
テストシナリオを完了した場合は、環境をクリーンアップします。
- ユーティリティによって作成された、IAM Identity Center で確立されたグループに対応する新しい Redshift ロールを削除します。
- IAM Identity Center 内でユーティリティによって作成されたユーザーとグループを削除します。
- テストシナリオで指定されたユーザー、グループ、ロールを削除します。
tickitとtpcdsスキーマを削除します。
ロールを削除する際に FORCE パラメータを使用すると、関連する割り当てを削除できます。
まとめ
本記事では、Redshift のローカルユーザー管理を IAM Identity Center に移行する方法を紹介しました。移行により、一元化されたユーザーとグループ管理によるアクセス管理の簡素化、AWS サービス全体での合理化されたユーザーエクスペリエンス、管理負荷の削減など、組織にとって重要な利点があります。移行プロセスは段階的に実装できるため、本番環境に完全に移行する前に各ステップをテストして検証できます。
組織が AWS インフラストラクチャを拡大し続けるにつれて、IAM Identity Center を活用することは、安全で効率的なアクセス管理を維持するためにますます価値が高まります。すべてのデータと AI のための統合エクスペリエンスを提供する Amazon SageMaker Unified Studio もその一例です。
著者について
この記事は Kiro が翻訳を担当し、Solutions Architect の 榎本 貴之 がレビューしました。