Azure
Amazon Redshift クラスターにアクセスするためのアイデンティティプロバイダー (IdP) として Microsoft の Azure AD を使用できます。このチュートリアルでは、Azure を ID プロバイダー (IdP) として使用して、Amazon Redshift クラスターにアクセスする方法を説明します。
Microsoft Azure AD シングルサインオンで Amazon Redshift アクセスをフェデレーションする方法については、次の動画をご覧ください。
ステップ 1: Azure と AWS アカウントを相互に信頼するように設定する
以下の手順では、信頼関係を設定する方法を説明します。
相互に信頼するように Azure AD と AWS アカウントを設定するには
-
Azure AD ユーザーが接続するための既存の Amazon Redshift クラスターを作成または使用します。接続を設定するには、クラスター識別子など、このクラスターの特定のプロパティが必要です。詳細については、「クラスターの作成」を参照してください。
-
Microsoft Azure ポータルで AWS に使用される Azure Active Directory、グループ、ユーザーを設定します。
-
AWS コンソールへのシングルサインオンおよび Amazon Redshift へのフェデレーテッドログインに使用する Microsoft Azure ポータルに、エンタープライズアプリケーションとして Amazon Redshift を追加します。Enterprise application を選択します。
-
+New application を選択します。[アプリケーションを追加] ページが表示されます。
-
検索フィールドで
AWS
を検索します。 -
Amazon Web Services (AWS) を選択し、追加 をクリックします。これにより、AWS アプリケーションが作成されます。
-
管理 で、シングルサインオンを選択します。
-
SAML を選択します。[Amazon Web Services (AWS) | SAML ベースのサインオン] ページが表示されます。
-
はい を選択して、[SAML によるシングルサインオンのセットアップ] ページに進みます。このページには、事前設定されたシングルサインオン関連属性のリストが表示されます。
-
ベーシック SAML 設定 で、編集アイコンを選択し、保存 を選択します。
-
複数のアプリケーションを設定する場合は、識別子の値を指定します。たとえば、
と入力します。2 番目のアプリケーション以降では、この形式を # 記号とともに使用して、一意の SPN 値を指定します。https://signin.aws.amazon.com/saml#2
-
ユーザー属性とクレーム セクションで、編集アイコンを選択します。
既定では、一意のユーザー識別子 (UID)、ロール、RoleSessionName、SessionDuration クレームは事前に設定されています。
-
+ 新しいクレームの追加 を選択して、データベースユーザーのクレームを追加します。
[名前] に
DbUser
と入力します。[Namespace] に
https://redshift.amazon.com/SAML/Attributes
と入力します。[出典] で、[属性] を選択します。
出典属性で、user.userprincipalnameを選択します。次に、[保存] を選択します。
-
+ 新しいクレームの追加 を選択して、AutoCreate のクレームを追加します。
[名前] に
AutoCreate
と入力します。[Namespace] に
https://redshift.amazon.com/SAML/Attributes
と入力します。[出典] で、[属性] を選択します。
出典属性で、trueを選択します。次に、[保存] を選択します。
ここでは、
が AWS アカウント、123456789012
が作成した IAM ロール、AzureSSO
が IAM プロバイダーになります。AzureADProvider
クレーム名 値 一意のユーザー識別子 (名前 ID)
user.userprincipalname
https://aws.amazon.com/SAML/Attributes/SessionDuration
"900"
https://aws.amazon.com/SAML/Attributes/Role
arn:aws:iam::
123456789012
:role/AzureSSO
,arn:aws:iam::123456789012
:saml-provider/AzureADProvider
https://aws.amazon.com/SAML/Attributes/RoleSessionName
user.userprincipalname
https://redshift.amazon.com/SAML/Attributes/AutoCreate
"true"
https://redshift.amazon.com/SAML/Attributes/DbGroups
user.assignedroles
https://redshift.amazon.com/SAML/Attributes/DbUser
user.userprincipalname
-
アプリの登録 >
> 認証で、モバイルとデスクトップアプリケーションを追加します。URL を http://localhost/redshift と指定します。your-application-name
-
証明書の SAML 署名 セクションで ダウンロード を選択し、IAM SAMLアイデンティティプロバイダーを作成するときに使用するフェデレーションメタデータ XML ファイルをダウンロードして保存します。このファイルは、シングルサインオンアイデンティティの作成に使用されます。
-
IAM コンソールで、IAM SAML アイデンティティプロバイダーを作成します。指定したメタデータドキュメントは、Azure エンタープライズアプリケーションの設定時に保存したフェデレーションメタデータ XML ファイルです。詳細なステップついては IAM ユーザーガイドの IAMアイデンティティプロバイダー (コンソール) の作成と管理 を参照してください。
-
IAM コンソールで、SAML 2.0 フェデレーション用の IAM ロールを作成します。詳細なステップについては、「IAM ユーザーガイド」の「SAML 用のロールの作成」を参照してください。
IAM コンソールで SAML 2.0 フェデレーション用に作成した IAM ロールにアタッチできる IAM ポリシーを作成します。詳細な手順については、「IAM ユーザーガイド」の「IAM ポリシーの作成 (コンソール)」を参照してください。
環境に合わせて次のポリシー (JSON 形式) を変更します。
クラスターの AWS リージョンを
に置き換えます。us-west-1
AWS アカウントを
に置き換えます。123456789012
クラスター識別子 (またはすべてのクラスターの
*
) を
に置き換えます。cluster-identifier
データベース (またはすべてのクラスターの
*
) を
に置き換えます。dev
IAM ロールの一意の識別子を
に置き換えます。AROAJ2UCCR6DPCEXAMPLE
テナントまたは会社の E メールドメインを
に置き換えます。example.com
ユーザーに割り当てる予定のデータベースグループを
に置き換えます。my_dbgroup
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": [ "arn:aws:redshift:
us-west-1
:123456789012
:dbname:cluster-identifier
/dev
", "arn:aws:redshift:us-west-1
:123456789012
:dbuser:cluster-identifier
/${redshift:DbUser}", "arn:aws:redshift:us-west-1
:123456789012
:cluster:cluster-identifier
" ], "Condition": { "StringEquals": { "aws:userid": "AROAJ2UCCR6DPCEXAMPLE
:${redshift:DbUser}@example.com
" } } }, { "Effect": "Allow", "Action": "redshift:CreateClusterUser", "Resource": "arn:aws:redshift:us-west-1
:123456789012
:dbuser:cluster-identifier
/${redshift:DbUser}" }, { "Effect": "Allow", "Action": "redshift:JoinGroup", "Resource": "arn:aws:redshift:us-west-1
:123456789012
:dbgroup:cluster-identifier
/my_dbgroup
" }, { "Effect": "Allow", "Action": [ "redshift:DescribeClusters", "iam:ListRoles" ], "Resource": "*" } ] }このポリシーは、以下のアクセス許可を付与します。
最初のセクションでは、
GetClusterCredentials
API オペレーションに、指定したクラスターの一時的な認証情報を取得するアクセス許可を付与します。この例では、リソースは
で、データベースはcluster-identifier
、アカウントはdev
、AWS リージョンは123456789012
です。us-west-1
${redshift:DbUser}
句を使用すると、Azure AD で指定されたDbUser
値に一致するユーザーのみが接続できます。条件句は、特定のユーザーだけが強制的に一時認証情報を取得します。これらのユーザーは、会社の E メールドメインの E メールアドレスで識別される IAM アカウントのロール固有 ID
で指定されたロールのユーザーです。固有 ID の詳細については、IAM ユーザーガイドの 固有 ID を参照してください。AROAJ2UCCR6DPCEXAMPLE
IdP (この場合は Azure AD) を使用したセットアップによって、条件句の記述方法が決まります。従業員の E メールが
johndoe@example.com
の場合は、まず、${redshift:DbUser}
を従業員のユーザー名johndoe
に一致するスーパーフィールドに設定します。次に、この条件を機能させるため、AWS SAMLRoleSessionName
フィールドを従業員の E メールjohndoe@example.com
に一致するスーパーフィールドに設定します。このアプローチを使用する場合は、以下の点を考慮します。${redshift:DbUser}
を従業員の E メールに設定した場合は、例の JSON の@example.com
を削除して、RoleSessionName
に一致させます。従業員のユーザー名だけ
RoleSessionId
に設定した場合は、例の@example.com
を削除してRoleSessionName
と一致させます。例の JSON では、
${redshift:DbUser}
とRoleSessionName
の両方が従業員の E メールに設定されます。この例では、JSONで Amazon Redshift データベースのユーザー名@example.com
を使用して、クラスターにアクセスするためにユーザーをサインインします。
2 番目のセクションでは、指定したクラスターに
dbuser
名を作成する権限を付与します。この例の JSON では、作成を${redshift:DbUser}
に制限しています。3 番目のセクションでは、どの
dbgroup
にユーザーが参加できるかを指定する権限を付与します。この例の JSON では、ユーザーは指定したクラスターのmy_dbgroup
グループに参加できます。4 番目のセクションでは、ユーザーがすべてのリソースに対して実行できるアクションへのアクセス許可を付与します。この例の JSON では、ユーザーは
redshift:DescribeClusters
を呼び出し、クラスターエンドポイント、AWS リージョン、ポートなどのクラスター情報を取得できます。また、ユーザーはiam:ListRoles
を呼び出して、ユーザーが引き受けることができるロールを確認することもできます。
ステップ 2: Azure への認証用に JDBC または ODBC を設定する
トラブルシューティング
ブラウザ Azure AD プラグインに関する問題のトラブルシューティングを行うには、以下を検討します。
-
ブラウザ Azure AD プラグインを使用するには、リクエストで指定される返信 URL を、アプリケーションで構成された返信 URL と一致するように設定する必要があります。Microsoft Azure ポータルの SAML を使用したシングルサインオンのセットアップ ページに移動します。次に、返信 URL が http://localhost/redshift/ に設定されていることを確認します。
-
IdP テナントエラーが発生した場合は、IdP テナント 名が、Microsoft Azure で Active Directory をセットアップするために最初に使用したドメイン名と一致することを確認します。
Windows の場合、接続の設定 の セクション Amazon Redshift ODBC DSN セットアップページに移動します。次に、IdP (Azure) で構成されている会社のテナント名が、Microsoft Azure で Active Directory をセットアップするために最初に使用したドメイン名と一致することを確認します。
macOS と Linux では、odbc.ini ファイルを見つけます。次に、IdP (Azure) で構成されている会社のテナント名が、Microsoft Azure で Active Directory をセットアップするために最初に使用したドメイン名と一致することを確認します。
-
リクエストで指定された返信 URL がアプリケーションに設定されている返信 URL と一致しないというエラーが表示された場合は、リダイレクト URI が返信 URL と同じであることを確認します。
Microsoft Azure ポータルでアプリケーションの アプリ登録 ページに移動します。次に、リダイレクト URI が返信 URL と一致することを確認します。
-
予期しない応答: 不正なエラーが表示された場合は、モバイルとデスクトップアプリケーション の構成が完了したことを確認します。
Microsoft Azure ポータルでアプリケーションの アプリ登録 ページに移動します。次に、認証 に移動し、リダイレクト URI として http://localhost/redshift/ を使用するように モバイルとデスクトップアプリケーション が構成されていることを確認します。