Redshift を IAM アイデンティティセンターに接続してユーザーにシングルサインオンエクスペリエンスを提供する - Amazon Redshift

Redshift を IAM アイデンティティセンターに接続してユーザーにシングルサインオンエクスペリエンスを提供する

信頼されたアイデンティティのプロパゲーションを通じて、Amazon Redshift データウェアハウスへのユーザーとグループのアクセスを管理できます。これは Redshift と AWS IAM アイデンティティセンター間の接続を介して機能し、ユーザーにシングルサインオンエクスペリエンスを提供します。これにより、ディレクトリからユーザーやグループを呼び出して、直接アクセス許可を割り当てることができます。その後、この接続を使用して追加のツールやサービスと連携できるようになります。エンドツーエンドの例を説明すると、Amazon QuickSight ダッシュボードまたは Amazon Redshift クエリエディタ v2 を使用して Redshift にアクセスできます。この場合のアクセスは IAM アイデンティティセンターグループに基づいています。Redshift は、ユーザーが誰かや、ユーザーのグループメンバーシップを判断できます。IAM アイデンティティセンターを使用すると、Okta や PingOne などのサードパーティー ID プロバイダー (IdP) 経由でアイデンティティを接続して管理することもできます。

管理者は Redshift と IAM アイデンティティセンター間の接続を設定した後、データへのユーザーアクセスを承認するために ID プロバイダーグループに基づいてきめ細かいアクセスを設定できます。

Redshift と AWS IAM アイデンティティセンターの統合の利点

IAM アイデンティティセンターと Redshift を連携すると、組織は次のとおりの利点が得られます。

  • パスワードを再入力したり、管理者が複雑なアクセス許可を持つ IAM ロールを設定したりする必要なく、Amazon QuickSight のダッシュボード作成者は、Redshift データソースに接続できます。

  • IAM アイデンティティセンターは、AWS のワークフォースユーザーを一元管理する場所となります。IAM アイデンティティセンターを使用して、ユーザーとグループを直接作成したり、Okta、PingOne、Microsoft Entra ID (Azure AD) などの標準ベースの ID プロバイダーで管理する既存のユーザーやグループを接続したりできます。IAM アイデンティティセンターは、ユーザーとグループの選択した信頼できるソースに認証を指示し、Redshift がアクセスできるようにユーザーとグループのディレクトリを管理します。詳細については、「AWS IAM アイデンティティセンターユーザーガイド」の「アイデンティティソースの管理」と「サポートされている ID プロバイダー」を参照してください。

  • シンプルな自動検出および接続機能を使用して、単一の IAM アイデンティティセンターインスタンスを複数の Redshift クラスターやワークグループと共有できます。これにより、クラスターごとに IAM アイデンティティセンター接続を設定するという追加の労力を必要とせずにクラスターを迅速に追加できるようになり、すべてのクラスターとワークグループでユーザー、ユーザーの属性、グループを一貫して確認できるようになります。組織の IAM アイデンティティセンターインスタンスは、接続先のすべての Redshift データ共有と同じリージョンにある必要があることに注意します。

  • ユーザー ID は既知であり、データアクセスとともに記録されるため、AWS CloudTrail でユーザーアクセスを監査することでコンプライアンス規制への対応が容易になります。

Amazon Redshift での IAM アイデンティティセンターの統合の設定

Amazon Redshift クラスター管理者または Amazon Redshift Serverless 管理者は、Redshift を IAM アイデンティティセンター対応アプリケーションとして設定するためにいくつかのステップを実行する必要があります。これにより、Redshift は IAM アイデンティティセンターを自動的に検出して接続し、サインインサービスとユーザーディレクトリサービスを受信できるようになります。その後、Redshift 管理者がクラスターまたはワークグループを作成すると、新しいデータウェアハウスが IAM アイデンティティセンターを使用してデータベースアクセスを管理できるようになります。

Redshift を IAM アイデンティティセンターのマネージドアプリケーションとして有効にすべき理由は、IAM アイデンティティセンター内から、または IAM アイデンティティセンターと統合されたサードパーティーの ID プロバイダーからユーザーとグループのアクセス許可を制御できるようにするためです。データベースユーザー (アナリストやデータサイエンティストなど) が Redshift データベースにサインインすると、IAM アイデンティティセンターでユーザーのグループがチェックされ、これらが Redshift のロール名と一致します。Redshift データベースロールの名前を定義するグループは、このような方法で、例えば売上分析のためのテーブルセットにアクセスできます。以降のセクションでは、これを設定する方法について説明します。

前提条件

IAM アイデンティティセンターを Amazon Redshift と統合するための前提条件は次のとおりです。

  • アカウント設定 – クロスアカウントのユースケースを計画している場合、または同じ IAM アイデンティティセンターインスタンスの別のアカウントで Redshift クラスターを使用する場合は、AWS 組織の管理アカウントで IAM アイデンティティセンターを設定する必要があります。これには、アイデンティティソースの設定も含まれます。詳細については、「AWS IAM アイデンティティセンターユーザーガイド」の「開始方法」、「ワークフォースアイデンティティ」、「サポートされている ID プロバイダー」を参照してください。Redshift のデータに割り当てる前に、IAM アイデンティティセンターでユーザーまたはグループを作成したか、アイデンティティソースからユーザーとグループを同期したことを確認する必要があります。

    注記

    Redshift と IAM アイデンティティセンターが同じアカウントにある場合は、IAM アイデンティティセンターのアカウントインスタンスを使用するオプションがあります。Redshift クラスターまたはワークグループを作成したり構成したりする際には、ウィジェットを使用してこのインスタンスを作成できます。

  • 信頼できるトークン発行者の設定 – 場合によっては、信頼できるトークンを発行したり検証したりできる信頼できるトークン発行者の使用が必要になることがあります。これを実行する以前に、IAM アイデンティティセンターの統合を設定する Redshift 管理者が信頼できるトークン発行者を選択し、必要な属性を追加して設定を完了する前の準備ステップを実行する必要があります。この手順には、信頼できるトークン発行者となるように外部 ID プロバイダーを設定すること、IAM アイデンティティセンターコンソールにその属性を追加することなどがあります。これらのステップを完了するには、「信頼できるトークン発行者によるアプリケーションの使用」を参照してください。

    注記

    信頼できるトークン発行者の設定は、すべての外部接続で必要であるとは限りません。Amazon Redshift クエリエディタ v2 を使用して Redshift データベースに接続する場合には、信頼できるトークン発行者の設定は必要ありません。ただし、ID プロバイダーで認証するダッシュボードやカスタムアプリケーションなどのサードパーティーアプリケーションには、この設定を適用できます。

  • IAM ロールの設定 – 以降のセクションで、設定する必要のあるアクセス許可について説明しています。IAM のベストプラクティスに従ってアクセス許可を追加する必要があります。特定のアクセス許可については、以降の手順で詳しく説明します。

詳細については、「IAM アイデンティティセンターの開始方法」を参照してください。

IAM アイデンティティセンターと連携する ID プロバイダーの設定

ユーザーとグループのアイデンティティ管理を制御する最初のステップは、IAM アイデンティティセンターに接続して ID プロバイダーを設定することです。IAM アイデンティティセンター自体を ID プロバイダーとして使用することも、Okta などのサードパーティーのアイデンティティストアに接続することもできます。ID プロバイダーへの接続のセットアップと設定の詳細については、「IAM アイデンティティセンターユーザーガイド」の「外部 ID プロバイダーに接続する」を参照してください。このプロセスの最後に、テスト目的で少数のユーザーとグループを IAM アイデンティティセンターに追加していることを確認します。

管理権限

Redshift/IAM アイデンティティセンターのアプリケーションライフサイクル管理に必要な権限

Redshift 管理者が IAM アイデンティティセンターで使用するように Redshift を設定するために使用する IAM アイデンティティを作成する必要があります。一般的には、アクセス許可を付与した IAM ロールを作成し、必要に応じて他のアイデンティティに割り当てます。このロールには、次のアクションを実行するためのアクセス許可が必要です。

Redshift/IAM アイデンティティセンターアプリケーションの作成

  • sso:PutApplicationAssignmentConfiguration – セキュリティ用です。

  • sso:CreateApplication – を使用 IAM アイデンティティセンターのアプリケーションを作成するために使用されます。

  • sso:PutApplicationAuthenticationMethod – Redshift 認証アクセスを許可します。

  • sso:PutApplicationGrant – 信頼できるトークン発行者の情報を変更するために使用されます。

  • sso:PutApplicationAccessScope – Redshift IAM アイデンティティセンターのアプリケーションのセットアップ用です。これには、AWS Lake Formation 用と Amazon S3 Access Grants 用が含まれます。

  • redshift:CreateRedshiftIdcApplication – Redshift IDC アプリケーションの作成に使用されます。

Redshift/IAM アイデンティティセンターアプリケーションの説明

  • sso:GetApplicationGrant – 信頼できるトークン発行者の情報を一覧表示するために使用されます。

  • sso:ListApplicationAccessScopes — Redshift IAM アイデンティティセンターアプリケーション設定で、AWS Lake Formation や S3 Access Grants などのダウンストリームインテグレーションを一覧表示できるようにします。

  • redshift:DescribeRedshiftIdcApplications — 既存の IAM アイデンティティセンターアプリケーションを説明するために使用されます。

Redshift/IAM アイデンティティセンターアプリケーションの変更

  • redshift:ModifyRedshiftIdcApplication – 既存の Redshift アプリケーションを変更するために使用されます。

  • sso:UpdateApplication – IAM アイデンティティセンターのアプリケーションの更新に使用されます。

  • sso:GetApplicationGrant – 信頼できるトークン発行者の情報を取得します。

  • sso:ListApplicationAccessScopes – Redshift IAM アイデンティティセンターのアプリケーションのセットアップ用です。

  • sso:DeleteApplicationGrant – 信頼できるトークン発行者の情報を削除します。

  • sso:PutApplicationGrant – 信頼できるトークン発行者の情報を変更するために使用されます。

  • sso:PutApplicationAccessScope – Redshift IAM アイデンティティセンターのアプリケーションのセットアップ用です。これには、AWS Lake Formation 用と Amazon S3 Access Grants 用が含まれます。

  • sso:DeleteApplicationAccessScope – Redshift IAM アイデンティティセンターのアプリケーションの削除用です。これには、AWS Lake Formation 用と Amazon S3 Access Grants 用が含まれます。

Redshift/IAM アイデンティティセンターアプリケーションの削除

  • sso:DeleteApplication – IAM アイデンティティセンターのアプリケーションを削除するために使用されます。

  • redshift:DeleteRedshiftIdcApplication – 既存の Redshift IDC アプリケーションを削除できます。

Redshift/クエリエディタ v2 アプリケーションのライフサイクル管理に必要な権限

Redshift 管理者が IAM アイデンティティセンターで使用するように Redshift を設定するために使用する IAM アイデンティティを作成する必要があります。一般的には、アクセス許可を付与した IAM ロールを作成し、必要に応じて他のアイデンティティに割り当てます。このロールには、次のアクションを実行するためのアクセス許可が必要です。

クエリエディタ v2 アプリケーションの作成

  • redshift:CreateQev2IdcApplication — QEV2 アプリケーションの作成に使用されます。

  • sso:CreateApplication – IAM アイデンティティセンターアプリケーションを作成する許可を付与します。

  • sso:PutApplicationAuthenticationMethod – Redshift 認証アクセスを許可します。

  • sso:PutApplicationGrant – 信頼できるトークン発行者の情報を変更するために使用されます。

  • sso:PutApplicationAccessScope – Redshift IAM アイデンティティセンターのアプリケーションのセットアップ用です。これにはクエリエディタ v2 などがあります。

  • sso:PutApplicationAssignmentConfiguration – セキュリティ用です。

クエリエディタ v2 アプリケーションの説明

  • redshift:DescribeQev2IdcApplications — IAM アイデンティティセンター QEV2 アプリケーションを説明するために使用されます。

クエリエディタ v2 アプリケーションの変更

  • redshift:ModifyQev2IdcApplication — IAM アイデンティティセンター QEV2 アプリケーションを変更するために使用されます。

  • sso:UpdateApplication — IAM アイデンティティセンター QEV2 アプリケーションを変更するために使用されます。

クエリエディタ v2 アプリケーションの削除

  • redshift:DeleteQev2IdcApplication — QEV2 アプリケーションの削除に使用されます。

  • sso:DeleteApplication — QEV2 アプリケーションの削除に使用されます。

注記

Amazon Redshift SDK では、次の API は使用できません。

  • CreateQev2IdcApplication

  • DescribeQev2IdcApplications

  • ModifyQev2IdcApplication

  • DeleteQev2IdcApplication

これらのアクションは、IAM アイデンティティセンターと Redshift QEV2 の統合を AWS コンソールで実行する場合に固有のものです。詳細については、「Actions defined by Amazon Redshift」を参照してください。

コンソールで新しいリソースに接続するために必要なデータベース管理者権限

このようなアクセス許可は、作成プロセス中に新たにプロビジョンされたクラスターまたは Amazon Redshift Serverless ワークグループに接続するために必要となります。このようなアクセス許可がある場合は、Redshift 用の IAM アイデンティティセンターマネージドアプリケーションに接続するためのオプションがコンソールに表示されます。

  • redshift:DescribeRedshiftIdcApplications

  • sso:ListApplicationAccessScopes

  • sso:GetApplicationAccessScope

  • sso:GetApplicationGrant

ベストプラクティスとして、アクセス許可ポリシーを IAM ロールにアタッチし、それを必要に応じてユーザーやグループに割り当てることをお勧めします。詳細については、「Amazon Redshift での Identity and Access Management」を参照してください。

IAM アイデンティティセンターでの AWS マネージドアプリケーションとしての Redshift の設定

IAM アイデンティティセンターが Amazon Redshift でプロビジョンされたクラスターまたは Amazon Redshift Serverless ワークグループのアイデンティティを管理するには、Redshift 管理者は Redshift を IAM アイデンティティセンターのマネージドアプリケーションにするステップを実行する必要があります。

  1. Amazon Redshift または Amazon Redshift Serverless のコンソールメニューで [IAM アイデンティティセンターの統合] を選択して、[Connect to IAM Identity Center] をクリックします。その後一連の選択を行い、IAM アイデンティティセンター統合のプロパティを設定します。

  2. Redshift の IDC マネージドアプリケーションの表示名と一意の名前を選択します。

  3. 組織の名前空間を指定します。これには通常、組織名の省略形を使用します。これは、IDC が管理するユーザーとロールのプレフィックスとして Redshift データベースに追加されます。

  4. 使用する IAM ロールを選択します。この IAM ロールは、Redshift に使用されるその他のロールとは別に作成する必要があります。これ以外の目的には使用しないことをお勧めします。特定のポリシーに必要となるアクセス許可は次のとおりです。

    • sso:DescribeApplication – カタログに ID プロバイダー (IdP) エントリを作成するために必要です。

    • sso:DescribeInstance – IdP フェデレーションロールまたはユーザーを手動で作成する場合に使用します。

  5. クライアント接続と信頼できるトークン発行者を設定します。信頼できるトークン発行者を設定すると、外部の ID プロバイダーとの関係が確立されるので、信頼できる ID のプロパゲーションが容易になります。ID のプロパゲーションにより、ユーザーは例えば、あるアプリケーションにサインインして、別のアプリケーションの特定のデータにアクセスできるようになります。これにより、ユーザーは別の場所からデータをよりシームレスに収集できます。このステップでは、信頼できる各トークン発行者の属性をコンソールで設定します。属性には名前と対象者クレーム (または aud claim) があります。これらはツールまたはサービスの設定属性から取得する必要がある場合があります。また、サードパーティーツールの JSON Web Token (JWT) からアプリケーション名を指定する必要がある場合もあります。

    注記

    aud claim が各サードパーティーツールまたはサービスから必要とするのは、トークンタイプ (ID プロバイダーが発行するアクセストークン、または ID トークンのような別のタイプのトークン) によって異なる場合があります。各ベンダーにより異なる場合があります。信用されるアイデンティティのプロパゲーションを実装し、Redshift と統合する場合、サードパーティーツールが AWS に送信するトークンタイプに適切な aud 値を指定する必要があります。ツールまたはサービスベンダーの推奨事項を確認します。

    信頼できる ID のプロパゲーションに関する詳細については、「信頼できる ID のプロパゲーションの仕組み」を参照してください。また、このドキュメントに付属する IAM アイデンティティセンターのベータ版ドキュメントも参照してください。

Redshift 管理者が手順を完了して設定を保存すると、IAM アイデンティティセンターのプロパティが Redshift コンソールに表示されます。システムビュー SVV_IDENTITY_PROVIDERS でクエリを実行して、アプリケーションのプロパティを確認することもできます。プロパティには、アプリケーション名と名前空間などがあります。名前空間は、アプリケーションに関連付けられた Redshift データベースオブジェクトのプレフィックスとして使用します。上記のタスクを完了すると、Redshift は IAM アイデンティティセンター対応アプリケーションになります。コンソールのプロパティには統合ステータスが含まれます。統合が完了すると、「有効」と表示されます。このプロセスが完了すると、新しいクラスターごとに IAM アイデンティティセンター統合を有効にできます。

設定後、[ユーザー] または [グループ] タブをクリックして、[割り当てる] を選択すると、Redshift で IAM アイデンティティセンターからユーザーとグループを含めることができます。

Amazon Redshift クラスターまたは Amazon Redshift Serverless ワークグループの IAM アイデンティティセンターの統合の有効化

データベース管理者は、サインインとデータアクセスを容易にするために IAM アイデンティティセンターと連携して動作するように新しい Redshift リソースを設定します。これは、プロビジョンされたクラスターまたはサーバーレスワークグループを作成する手順の一貫として実行されます。Redshift リソースを作成するアクセス許可を持つユーザーが、このような IAM アイデンティティセンター統合タスクを実行できます。プロビジョンされたクラスターを作成する場合、まず Amazon Redshift コンソールで [クラスターを作成] を選択します。データベースの IAM アイデンティティセンター管理を有効にする方法は、次の手順のとおりです。(クラスターを作成する手順がすべて含まれているわけではありません)。

  1. クラスター作成ステップの [IAM アイデンティティセンターの統合]セクションで、[有効にする] を選択します。

  2. 統合を有効にするプロセスにはステップがあり、これを実行するには、コンソールで [IAM アイデンティティセンターの統合を有効にする] を選択します。

  3. 新しいクラスターまたはワークグループの場合、SQL コマンドを使用して Redshift でデータベースロールを作成します。このコマンドは、次のとおりです。

    CREATE ROLE <idcnamespace:rolename>;

    名前空間名とロール名は、次のとおりです。

    • IAM アイデンティティセンター名前空間プレフィックス – これは IAM アイデンティティセンターと Redshift 間の接続の設定時に定義した名前空間です。

    • ロール名 – この Redshift データベースロールは IAM アイデンティティセンターのグループ名と一致する必要があります。

    Redshift は IAM アイデンティティセンターに接続して、データベースロールを作成し、IAM アイデンティティセンターグループにマッピングするために必要な情報を取得します。

新しいデータウェアハウスを作成すると、IDC 統合に指定された IAM ロールが、プロビジョンされたクラスターまたは Amazon Redshift Serverless ワークグループに自動的にアタッチされることに注意します。必要なクラスターのメタデータの入力を完了し、リソースを作成した後、プロパティで IAM アイデンティティセンター統合のステータスを確認できます。IAM アイデンティティセンターのグループ名にスペースが含まれている場合は、一致するロールを作成する際に SQL で引用符を使用する必要があります。

Redshift データベースを有効にしてロールを作成したら、Amazon Redshift クエリエディタ v2 または Amazon QuickSight を使用してデータベースに接続できるようになります。詳細については、以降のセクションで詳しく説明します。

API を使用したデフォルトの RedshiftIdcApplication の設定

セットアップはアイデンティティ管理者が行います。API を使用して、IAM アイデンティティセンター内の Redshift アプリケーションを表す RedshiftIdcApplication を作成してデータを入力します。

  1. まず、ユーザーを作成して、IAM アイデンティティセンター内のグループに追加します。これは IAM アイデンティティセンター (IDC) の AWS コンソールで行います。

  2. create-redshift-idc-application を呼び出して IDC アプリケーションを作成して、Redshift の使用に対応させます。必要な値を入力してアプリケーションを作成します。表示名とは IDC ダッシュボードに表示される名前です。IAM ロール ARN は、IAM アイデンティティセンターへのアクセス許可を持つ ARN であり、Redshift も引き受けることができます。

    aws redshift create-redshift-idc-application ––idc-instance-arn 'arn:aws:sso:::instance/ssoins-1234a01a1b12345d' ––identity-namespace 'MYCO' ––idc-display-name 'TEST-NEW-APPLICATION' ––iam-role-arn 'arn:aws:redshift:us-east-1:012345678901:role/TestRedshiftRole' ––redshift-idc-application-name 'myredshiftidcapplication'

    create-redshift-idc-application への呼び出しから返される RedshiftIdcApplication の応答サンプルは、次の例のとおりです。

    "RedshiftIdcApplication": { "IdcInstanceArn": "arn:aws:sso:::instance/ssoins-1234a01a1b12345d", "RedshiftIdcApplicationName": "test-application-1", "RedshiftIdcApplicationArn": "arn:aws:redshift:us-east-1:012345678901:redshiftidcapplication:12aaa111-3ab2-3ab1-8e90-b2d72aea588b", "IdentityNamespace": "MYCO", "IdcDisplayName": "Redshift-Idc-Application", "IamRoleArn": "arn:aws:redshift:us-east-1:012345678901:role/TestRedshiftRole", "IdcManagedApplicationArn": "arn:aws:sso::012345678901:application/ssoins-1234a01a1b12345d/apl-12345678910", "IdcOnboardStatus": "arn:aws:redshift:us-east-1:123461817589:redshiftidcapplication", "RedshiftIdcApplicationArn": "Completed", "AuthorizedTokenIssuerList": [ "TrustedTokenIssuerArn": ..., "AuthorizedAudiencesList": [...]... ]}
  3. create-application-assignment を使用して、IAM アイデンティティセンターマネージドアプリケーションに特定のグループまたは個別のユーザーを割り当てることができます。れにより、IAM アイデンティティセンターを介して管理するグループを指定できます。データベース管理者が Redshift でデータベースロールを作成した場合、IAM アイデンティティセンターのグループ名は Redshift のロール名にマップされます。ロールはデータベース内のアクセス許可を制御します。詳細については、「IAM アイデンティティセンターコンソールでアプリケーションへのユーザーアクセスを割り当てる」を参照してください。

  4. アプリケーションを有効にしたら、create-cluster を呼び出します。IAM アイデンティティセンターからの Redshift マネージドアプリケーション ARN を含めます。これを実行すると、クラスターが IAM アイデンティティセンターのマネージドアプリケーションに関連付けられます。

IAM アイデンティティセンターアプリケーションの既存のクラスターまたはワークグループへの関連付け

IAM アイデンティティセンターとの統合を有効にする既存のクラスターまたはワークグループがある場合は、SQL コマンドを実行します。次のコマンドを実行して統合を有効にします。データベース管理者がクエリを実行して、Redshift と IAM アイデンティティセンター間の接続がすでにセットアップされている必要があります。ENABLE を設定すると、IAM アイデンティティセンターがクラスターまたはワークグループのアイデンティティを管理できるようになります。

ALTER IDENTITY PROVIDER <idp_name> | NAMESPACE <namespace> | IAM_ROLE default | 'arn:aws:iam::<AWS account-id-1>:role/<role-name>' | [DISABLE | ENABLE]

既存の ID プロバイダーは削除できます。CASCADE が ID プロバイダーにアタッチされているユーザーとロールを削除する方法は、次の例のとおりです。

DROP IDENTITY PROVIDER <provider_name> [ CASCADE ]

ユーザーのアクセス許可のセットアップ

管理者は、ユーザーの ID 属性とグループメンバーシップに基づいて、ID プロバイダー内または IAM アイデンティティセンター内で直接、さまざまなリソースへのアクセス許可を設定します。例えば、ID プロバイダーの管理者は、データベースエンジニアを役割に応じたグループに追加できます。このグループ名は Redshift データベースロール名にマップされます。このロールにより、Redshift の特定のテーブルまたはビューへのアクセスが提供されたり制限されたりします。

アプリケーションの接続のための管理者ペルソナ

分析アプリケーションを Redshift 向けの IAM アイデンティティセンターマネージドアプリケーションに接続するための重要なペルソナは次のとおりです。

  • アプリケーション管理者 – アプリケーションを作成して、アイデンティティトークンの交換ができるようになるサービスを設定します。この管理者は、アプリケーションにアクセスできるユーザーまたはグループも指定します。

  • データ管理者 – データに対するきめ細かいアクセスを設定します。IAM アイデンティティセンターのユーザーとグループは、特定のアクセス許可にマッピングされます。

Amazon QuickSight を介した IAM アイデンティティセンターでの Amazon Redshift への接続

Amazon QuickSight が IAM アイデンティティセンターに接続され、アクセスが管理されている場合に、Amazon QuickSight を使用して Redshift による認証を行う方法の詳細は、「Amazon QuickSight から Amazon Redshift クラスターへの接続の承認」で説明されています。このようなステップは Amazon Redshift Serverless にも適用されます。

Amazon Redshift クエリエディタ v2 を介した IAM アイデンティティセンターでの Amazon Redshift への接続

Redshift での IAM アイデンティティセンター接続のセットアップ手順を完了すると、ユーザーは IAM アイデンティティセンターベースの名前空間プレフィックス付き ID を通じてデータベースとデータベース内の適切なオブジェクトにアクセスできるようになります。クエリエディタ v2 のサインインで Redshift データベースに接続する方法の詳細については、「クエリエディタ v2 の操作」を参照してください。

AWS Lake Formation を介したデータのクエリ

AWS Lake Formation を使用すると、データレイクの一元管理と保護、データアクセスの提供が容易になります。IAM アイデンティティセンターと Redshift を介して Lake Formation へのアイデンティティプロパゲーションを設定すると、管理者は組織の ID プロバイダー (IdP) グループに基づいて、Amazon S3 データレイクへのきめ細かいアクセスを許可できるようになります。このようなグループは IAM アイデンティティセンターを通じて管理されます。このセクションでは、データレイクからのクエリとデータ共有からのクエリといういくつかのユースケースを設定する方法を示します。このようなユースケースでは、IAM アイデンティティセンターと Redshift を活用して Lake Formation が管理するリソースに接続する方法が示されます。

データレイクのクエリのための IAM アイデンティティセンターと Redshift 接続の使用

Redshift に接続された IAM アイデンティティセンターを使用して、Lake Formation が管理するデータレイクにクエリを実行するユースケースを次の手順で説明します。

前提条件

この手順には、次のとおりの前提条件のステップがあります。

  1. IAM アイデンティティセンターを、Redshift による認証とアイデンティティ管理をサポートするように設定する必要があります。コンソールから IAM アイデンティティセンターを有効にして、ID プロバイダー (IdP) ソースを選択できます。その後、IdP ユーザーのセットを IAM アイデンティティセンターと同期します。また、このドキュメントで前述した手順に従って、IAM アイデンティティセンターと Redshift 間の接続を設定する必要があります。

  2. 新しい Amazon Redshift クラスターを作成して、設定ステップで IAM アイデンティティセンターを介したアイデンティティ管理を有効にします。

  3. Lake Formation 向けのマネージド IAM アイデンティティセンターアプリケーションを作成して設定します。その後、IAM アイデンティティセンターと Redshift 間の接続をセットアップします。手順は次のとおりです。

    1. AWS CLI で modify-redshift-idc-application コマンドを使用して、Lake Formation サービスと Redshift の IAM アイデンティティセンターマネージドアプリケーションとの統合を有効にします。この呼び出しには、Lake Formation への認証を有効にする設定文字列値に設定された service-integrations パラメータが含まれます。

    2. create-lake-formation-identity-center-configuration コマンドを使用して Lake Formation を設定します。これにより、Lake Formation 向けの IAM アイデンティティセンターアプリケーションが作成され、IAM アイデンティティセンターポータルに表示されます。管理者は ––cli-input-json 引数を設定する必要があります。引数の値は、すべての AWS CLI API コールの標準形式を使用する JSON ファイルへのパスです。次の値を含める必要があります。

      • CatalogId – Lake Formation カタログ ID

      • InstanceArn – IAM アイデンティティセンターインスタンスの ARN 値

管理者が前提条件の設定を完了すると、データベース管理者はデータレイクをクエリするための外部スキーマを作成できます。

  1. 管理者が外部スキーマを作成する – Redshift データベース管理者は、次の SQL ステートメントを使用してデータベースに接続し、外部スキーマを作成します。

    CREATE EXTERNAL SCHEMA if not exists my_external_schema from DATA CATALOG database 'my_lf_integrated_db' catalog_id '12345678901234';

    この場合、アクセスは IAM アイデンティティセンターを介して管理されるため、IAM ロールを指定する必要はないことに注意します。

  2. 管理者がアクセス許可を付与する – 管理者は IAM アイデンティティセンターグループに使用権限を付与します。これにより、Redshift リソースへのアクセス許可が付与されます。これには、次のような SQL ステートメントを実行します。

    GRANT USAGE ON SCHEMA "my_external_schema" to "MYCO:sales";

    その後、管理者は AWS CLI を使用して、組織の要件に基づいてオブジェクトに対する Lake Formation のアクセス許可を付与します。

    aws lakeformation grant-permissions ...
  3. ユーザーがクエリを実行する – この説明の例では、この時点で営業グループに属する IAM アイデンティティセンターユーザーは、クエリエディタ v2 を使用して Redshift データベースにログインできます。その後、次のサンプルのように、外部スキーマのテーブルにアクセスするクエリを実行できます。

    SELECT * from my_external_schema.table1;

IAM アイデンティティセンターと Redshift 接続を使用したデータ共有への接続

IAM アイデンティティセンターを介してアクセスが管理されている場合、別の Redshift データウェアハウスからデータ共有にアクセスできます。これを行うには、クエリを実行して外部データベースを設定します。この手順を完了する前に、上記の手順の説明のとおり、Redshift と IAM アイデンティティセンター間の接続を設定し、AWS Lake Formation アプリケーションを作成していることが前提となります。

  1. 外部データベースの作成 — 管理者はデータ共有のための外部データベースを作成し、ARN を通じて参照します。次のサンプルは、この方法を説明しています。

    CREATE DATABASE "redshift_external_db" FROM ARN 'arn:aws:glue:us-east-1:123456789012:database/redshift_external_db-iad' WITH NO DATA CATALOG SCHEMA;

    アイデンティティ管理のために IAM アイデンティティセンターと Redshift を使用するこのようなユースケースでは、IAM ロールは含まれていません。

  2. 管理者がアクセス許可を設定する – データベースを作成した後、管理者が IAM アイデンティティセンターグループに使用権限を付与します。これにより、Redshift リソースに対するアクセス許可が付与されます。

    GRANT USAGE ON DATABASE "my_external_db" to "MYCO:sales";

    管理者は、AWS CLI を使用して、オブジェクトに対する Lake Formation のアクセス許可も付与します。

    aws lakeformation grant-permissions ...
  3. ユーザーがクエリを実行する – 営業グループのユーザーは、割り当てられたアクセス許可に基づいてデータベース内のテーブルに対してクエリを実行できます。

    select * from redshift_external_db.public.employees;

データレイクに対するアクセス許可の付与とデータ共有アクセス許可の付与の詳細については、「ユーザーとグループへのアクセス許可の付与」を参照してください。スキーマまたはデータベースへの使用権限の詳細については、「GRANT」を参照してください。

信頼できるトークン発行者を使用したアプリケーションまたはツールと OAuth の統合

作成するクライアントツールに Redshift に接続するための機能を追加するには、IAM アイデンティティセンターの接続を利用できます。Redshift と IAM アイデンティティセンターの統合を設定済みである場合は、このセクションで詳述しているプロパティを使用して接続をセットアップします。

IAM アイデンティティセンターを使用して Redshift に接続するための認証プラグイン

IdpTokenAuthPlugin は、接続プロパティを提供し、IAM アイデンティティセンターでの認証を容易にします。IAM アイデンティティセンターに接続された任意のウェブ ID プロバイダーから OpenID Connect (OIDC) JSON ウェブトークン (JWT) を受け入れます。

Amazon Redshift ドライバーを使用している場合は、IAM アイデンティティセンターでの Redshift への認証に IdpTokenAuthPlugin を使用できます このプラグインは、IAM アイデンティティセンターに接続された任意のウェブ ID プロバイダーから OIDC JWT を受け入れます。次の表は、認証を成功させるために使用する接続オプションの詳細を示しています。

ドライバー 接続オプションキー Value メモ

JDBC

plugin_name

com.amazon.redshift.plugin.IdpTokenAuthPlugin

接続時には、プラグインの完全修飾クラス名を入力する必要があります。

ODBC

plugin_name

IdpTokenAuthPlugin

Python

credentials_provider

IdpTokenAuthPlugin

Python ドライバーに利用可能な plugin_name オプションはありません。代わりに credentials_provider を使用してください。

このプラグインには、以下に示す追加の接続オプションがあります。

  • token — IAM アイデンティティセンターに接続されたウェブ ID プロバイダーが提供する OpenID Connect (OIDC) JSON ウェブトークン (JWT)。アプリケーションは、このトークンを生成するために、IAM アイデンティティセンターに接続された ID プロバイダーによって、アプリケーションのユーザーを認証する必要があります。

  • token_typeIdpTokenAuthPlugin に使用するトークンのタイプ。次のオプションで値を指定できます。

    • EXT_JWT — IAM アイデンティティセンターに接続されたウェブベースの ID プロバイダーが提供する OpenID Connect (OIDC) JSON ウェブトークン (JWT) を使用する場合は、これを指定します。

上記の値は、ツールを作成して、このツールに接続する際の接続プロパティに入力します。詳細については、各ドライバーの接続オプションに関するドキュメントを参照してください。

Amazon Redshift クエリエディタ v2 からの接続のトラブルシューティング

このリストは、よく発生するエラーの詳細を示しており、IAM アイデンティティセンター ID を使用してクエリエディタ v2 で Redshift データベースに接続する際に役立ちます。

  • エラー: 接続の問題: アイデンティティセンターのセッション情報がありません。– このエラーが発生した場合は、ブラウザのセキュリティとプライバシーの設定を確認してください。これらのブラウザ設定 (特に Firefox の包括的 Cookie 保護機能などの安全な Cookie に関する設定) では、Amazon Redshift クエリエディタ v2 から Redshift データベースへの接続がブロックされる可能性があります。ブラウザで詳しく説明している修復ステップに従います。

    • Firefox – 現在、サードパーティの Cookie はデフォルトでブロックされます。ブラウザのアドレスバーで盾のアイコンをクリックし、クエリエディタ v2 での強化された追跡保護をオフに切り替えます。

    • Chrome のシークレットモード – Chrome のシークレットモードは、デフォルトでサードパーティの Cookie をブロックします。アドレスバーの目のアイコンをクリックして、クエリエディタ v2 でのサードパーティの Cookie を許可します。Cookie を許可するように設定を変更すると、アドレスバーに目のアイコンが表示されない場合があります。

    • Safari – Mac で Safari アプリを開きます。[設定][詳細] の順に選択します。オフに切り替える: すべての Cookie をブロックします。

    • Edge[設定][Cookie とサイトのアクセス許可] の順に選択します。次に、[Cookie とサイトデータの管理と削除] を選択し、[サードパーティの Cookie をブロックする] をオフにします。

    設定の変更後に接続しようとして、「接続の問題: アイデンティティセンターのセッション情報がありません」というエラーメッセージが引き続き表示される場合は、IAM アイデンティティセンターとの接続を更新することをお勧めします。これを行うには、Redshift データベースインスタンスを右クリックし、[更新] を選択します。認証に使用できる新しいウィンドウが表示されます。

  • エラー: 接続の問題: アイデンティティセンターのセッションが有効期限切れであるか、無効です。– Redshift でプロビジョニングされたクラスターまたはサーバーレスワークグループと IAM アイデンティティセンターを統合した場合、ユーザーがクエリエディタ v2 から Redshift データベースに接続しようとすると、このエラーが表示される場合があります。これは、接続の試行が成功した後に起こる場合があります。この場合は、再認証することをお勧めします。これを行うには、Redshift データベースインスタンスを右クリックし、[更新] を選択します。認証に使用できる新しいウィンドウが表示されます。

  • エラー: 無効なスコープ。ユーザー認証情報には Redshift に接続する権限がありません。Redshift でプロビジョニングされたクラスターまたはサーバーレスワークグループと IAM アイデンティティセンターを統合した場合、ユーザーがクエリエディタ v2 から Redshift データベースに接続しようとすると、このエラーが表示される場合があります。この場合、クエリエディタ v2 を使用して IAM アイデンティティセンター経由でユーザーを正常に接続して認証し、正しいリソースにアクセスできるようにするには、管理者が Redshift コンソールで Redshift IAM アイデンティティセンターアプリケーションにユーザーを割り当てる必要があります この操作は [IAM アイデンティティセンターの接続] で実行します。これに続いて、ユーザーは 1 時間後に正常に接続を確立できます。この時間は、IAM アイデンティティセンターセッションのキャッシュの上限です。

  • エラー: データベースを一覧表示できませんでした。致命的: クラスターが自動的に一時停止すると、クエリが失敗します。– Amazon Redshift Serverless データベースがアイドル状態で、ワークロードを処理していない場合、IAM アイデンティティセンター ID に接続すると、データベースは一時停止したままになることがあります。この問題を修正するには、別の認証方法でログインして Serverless ワークグループを再開します。次に、IAM アイデンティティセンター ID を使用してデータベースに接続します。

  • エラー: IAM アイデンティティセンターとのフェデレーションの試行中にエラーが発生しました。Amazon Redshift 管理者は、Redshift コンソールを使用して IAM アイデンティティセンター QEV2 アプリケーションを削除して再作成する必要があります。– このエラーは通常、クエリエディタ v2 に関連付けられた IAM アイデンティティセンターのアプリケーションインスタンスを削除したときに発生します。この問題を修正するには、Amazon Redshift 管理者が IAM アイデンティティセンターで Redshift およびクエリエディタ v2 アプリケーションを削除して再作成する必要があります。これを行うには、Redshift コンソールまたは https://docs.aws.amazon.com/cli/latest/reference/redshift/delete-redshift-idc-application.html CLI コマンドを使用できます。

制限事項

次のとおりの制限が適用されます。

  • Redshift ドライバーでの IAM アイデンティティセンターの使用 – 現在の Redshift ドライバーから利用可能な IdpTokenAuthPlugin を使用する場合、クライアントアプリケーションは認証トークンを生成する必要があります。ただし、AWS IAM アイデンティティセンターは現在、Redshift のアクセストークンの生成をサポートしていないことに注意してください。したがって、IAM アイデンティティセンターのアクセストークンの使用はサポートされません。現在、IdpTokenAuthPlugin を使用すると、IAM アイデンティティセンターと統合された Okta、PingOne、または Microsoft Entra ID (Azure AD) などの外部ウェブ ID プロバイダーを介して Amazon Redshift データベースに接続できます。この場合、クライアントはウェブ ID プロバイダーから OpenID Connect (OIDC) JSON ウェブトークン (JWT) を生成し、ドライバーの IdpTokenAuthPlugin への入力として提供する責任があります。プラグインについては、前のセクションで説明しています。IAM アイデンティティセンターの承認と認証を直接使用する場合は、クエリエディタ v2 を使用して接続することもできます。

  • 拡張された VPC のサポートなし – IAM アイデンティティセンターで Redshift の信頼できる ID の伝播を設定する場合、拡張された VPC はサポートされません。拡張された VPC の詳細については、「Amazon Redshift の拡張された VPC ルーティング」を参照してください。

  • IAM アイデンティティセンターのキャッシュ – IAM アイデンティティセンターはセッション情報をキャッシュします。これにより、Redshift クエリエディタ v2 を介して Redshift データベースに接続しようとすると、予期しないアクセス問題が発生する可能性があります。これは、データベースユーザーが AWS コンソールからサインアウトした後でも、クエリエディタ v2 の関連付けられた IAM アイデンティティセンターのセッションは有効なまま残るためです。キャッシュは 1 時間後に期限切れになるため、通常は、問題が修正されます。