接続の確立
接続プロファイルの設定
[CData]リボンから[データの取得]をクリックし、[取得元:Amazon Redshift]> 設定済みの接続 を選択してCData クエリウィンドウを起動します。新しい接続を設定するには、[新しいAmazon Redshift 接続]をクリックします。ここでは、接続の設定、接続のテスト、および接続プロファイルの保存を行うことができます。
Amazon Redshift への接続
Amazon Redshift に接続するには、通常次の接続プロパティが必要です。
- Server:Amazon Redshift データベースをホスティングしているサーバーのホスト名またはIP アドレス。
- Database:Amazon Redshift クラスター用に作成したデータベース。
- Port(オプション):Amazon Redshift データベースをホスティングしているサーバーのポート。デフォルトは5439です。
以下の手順に従って、これらの値をAWS マネージメントコンソールで取得できます。
- Amazon Redshift コンソールを開きます(http://console.aws.amazon.com/redshift)。
- Clusters ページで、クラスターの名前をクリックします。
- Configuration タブで"Cluster Database Properties" セクションからプロパティを取得します。接続プロパティの値は、ODBC URL で設定された値と同じになります。
本製品 は、SSL 暗号化を使用してAmazon Redshift サーバーとのセキュアな通信を提供します。オプションで、UseSSL をfalse に設定して、SSL 暗号化をオフにすることができます。
SSL 認証を活用してAmazon Redshift データに接続することもできます。そのためには、次の接続プロパティを設定してください。
- SSLClientCert:クライアント証明書のための証明書ストア名に設定。クライアントとサーバーの両方のマシンでトラストストアとキーストアが保持される2-way SSL の場合に使用されます。
- SSLClientCertPassword:クライアント証明書ストアがパスワードで保護されている場合、この値をストアのパスワードに設定します。
- SSLClientCertSubject:TLS / SSL クライアント証明書のサブジェクト。ストア内の証明書を検索するために使用されます。
- SSLClientCertType:クライアントストアの証明書タイプ。
- SSLServerCert:サーバーが受け入れ可能な証明書。
次の例では、通常のユーザー名とパスワードのペア、および非アクティブなSSL 暗号化を使用してAmazon Redshift に接続します。
User=username;Password=password;Server=example.us-west-2.redshift.amazonaws.com;Database=your_database;UseSSL=false;"
Amazon Redshift への認証
Azure Active Directory
前提条件
- B2C 以外のAzure テナントのみがAzure AD 認証スキームを完了できます。
- 有効なAzure AD アカウントが必要です。有効なアカウントがない場合は、このプロセスを始める前にアカウントを作成してください。
認証
Azure AD の認証を行うには、以下のタスクを完了する必要があります。- OAuth アプリケーションの作成と登録
- Redshift Client Application の作成と設定
- 新しいId プロバイダーを定義
- 接続プロパティを指定
以下のセクションでは、これらのタスクについて詳しく説明します。
OAuth アプリケーションの作成と登録
以下の手順で、Azure 経由でAmazon Redshift データベースにログインするためのOAuth アプリを作成します。
- Azure Active Directory 概要 ページにある左のナビゲーションバーで、アプリの登録を選択します。
- アプリの登録ページ上部の新規登録をクリックします。
- アプリの登録ページで、必要事項を入力し、ページ下部の登録をクリックします。CallbackURL プロパティ値を保存します。
- アプリケーションを作成すると、アプリの概要ページが表示されます。左のナビゲーションバーで:
- 証明書とシークレットをクリックします。
- 新しいクライアントシークレットをクリックします。
- クライアントシークレットの追加ウィンドウで、必要事項を追加してウィンドウ下部の追加をクリックします。
- OAuthClientSecret を控えておきます(表示されるOAuth シークレットの値フィールド)。
- 新規に登録したアプリケーションで、左のナビゲーションバーにあるAPI の公開をクリックします。
- App ID URI の横の設定をクリックします。
- 登録時に入力した情報を含むSet the App ID URI ダイアログが表示されます。保存をクリックします。
- Add a scope をクリックします。
- 必要事項を入力し、フォーム下部のスコープの追加をクリックします。
Redshift Client Application の作成と設定
以下の手順に従って、もう1つアプリケーションを作成します。このアプリは、Amazon Redshift データベースのクライアントアプリケーションとして機能します。
- Azure Active Directory 管理ページに移動して、アプリの登録をクリックします。
- ページ上部の新規登録をクリックします。
- アプリケーションの登録ページで、必要事項を入力し、ページ下部の登録をクリックします。
- アプリを作成すると、アプリの概要ページが表示されます。左のナビゲーションバーで:
- 証明書とシークレットをクリックします。
- 新しいクライアントシークレットをクリックします。
- クライアントシークレットの追加ウィンドウで、必要事項を追加してウィンドウ下部の追加をクリックします。
- OAuthClientSecret を控えておきます(表示されるOAuth シークレットの値フィールド)。
- クライアントアプリの管理ページの左のナビゲーションバーで:
- API のアクセス許可をクリックします。
- アクセス許可の追加をクリックします。
- Microsoft Graph API を選択します。
- アプリケーションの許可をクリックします。
- Directory -> "Directory.Read.All" を選択します。
- 下部の追加をクリックします。
- 管理者の同意を与えますをクリックします。
- はいをクリックします。
- Azure Active Directory の左のナビゲーションバーで:
- グループをクリックします。
- グループページで、新しいグループをクリックして必要事項を入力します。
- 所有者が選択されていませんをクリックします。
- 所有者を追加ウィンドウが表示されます。ユーザーを選択します。
- 作成をクリックします。
新しいId プロバイダーを定義
次の手順で、新しいId プロバイダーを定義します。
- Azure Active Directory 概要 ページで、
- 左のナビゲーションペインからアプリの登録を選択します。
- すべてのアプリケーションタブを選択し、最初のOAuth アプリケーションを選択します。
- OAuth ページで、左のナビゲーションバーにあるマニフェストをクリックします。エディターでaccessTokenAcceptedVersion を検索します。値がNULL の場合、v1.0 トークンです。値が2の場合はv2.0 トークンです。
- Amazon Redshift インスタンスのクエリボックスから、以下の例に従ってId プロバイダのクエリを送信します。
CREATE IDENTITY PROVIDER oauth_standard TYPE azure NAMESPACE 'mynamespace' PARAMETERS '{ "issuer":"https://sts.windows.net/your_tenant_here/", "client_id":"YourClientId", "client_secret":"YourClientSecret", "audience":["your_application_id_uri_here"] }'
用語説明
- issuer ID: トークンを受け取る際に信頼する発行者ID。発行者には、tenant_id の一意な識別子が付加されます。v1.0 トークンを使用する場合、https://sts.windows.net/<your_tenant_id_here>/ を使用します。V2.0 トークンを使用する場合、https://login.microsoftonline.com/<your_tenant_id_here>/v2.0 を使用します。
- client_id: Id プロバイダーに登録されたアプリケーションの一意の公開識別子。これをアプリケーションID と呼びます。2つ目のアプリケーション(Amazon Redshift クライアントアプリケーション)用に生成されたクライアントID です。
- client_secret: ID プロバイダーおよび登録されたアプリケーションにのみ知られている秘密の識別子、またはパスワード。2つ目のアプリケーション(Amazon Redshift アプリケーション)用に生成されたクライアントシークレットです。
- audience: 1つ目のアプリケーション(OAuth アプリケーション)に割り当てられたアプリケーションID(URI)。
NAMESPACE には好きな名前を使用できます。
- Amazon Redshift で、CREATE IDENTITY PROVIDER クエリ(例として上記)をクエリテキストボックスに配置します。
- クエリボックスの下部にあるRun をクリックします。
- クエリテキストボックスで、以下の形式でRedshift データベース上にロールを作成します。
create role "mynamespace:myazuregroup";
CREATE IDENTITY PROVIDER クエリで提供されたID プロバイダーの名前空間と、先に作成したAzure グループの名前に置き換えてください。クエリボックスの下部にあるRun をクリックします。 - クエリテキストボックスで、この新しいロールに以下のようにテーブルアクセス権を付与します。
grant select on all tables in schema public to role "mynamespace:myazuregroup";
- 上記の例を、自分の名前空間とAzure グループ名に置き換えてください。
- クエリボックスの下部にあるRun をクリックします。
接続プロパティを設定します。
次の接続プロパティを指定します。
- AuthScheme:AzureAD に設定。
- Server:Amazon Redshift サーバーエンドポイントの名前に設定。
- Database:接続するAmazon Redshift データベースの名前に設定。
- User:認証するAmazon Redshift ユーザーの名前に設定します。
- AzureTenant:OAuth およびクライアントアプリが作成されたAzure テナントのID に設定。アプリの1つの概要ページにあるディレクトリ(テナント)ID を確認してください。
- SSOLoginURL:OAuth アプリの概要ページで確認できるアプリケーションID のURI の値に設定。
- Scope:v1.0 OAuth トークンの場合、OAuth アプリのAPI の公開ページにあるスコープフィールド名に設定。v2.0 OAuth トークンの場合は、OAuth アプリのクライアントID と同じです。
- OAuthClientId:作成したAmazon Redshift クライアントアプリケーションの概要ページにある、1つ目のOAuth アプリケーションのクライアントID に設定。
- OAuthClientSecret:クライアントアプリケーションの証明書とシークレットページにある、1つ目のOAuth アプリケーションのOAuth クライアントシークレットの値に設定。
- CallbackURL:OAuth アプリのコールバックURL に設定。
トラブルシューティング: "Azure JWT token does not have 'upn' field" エラーが発生した場合、以下の手順に従います。
- Azure Active Directory の管理ページで、アプリの登録に移動し、自身のOAuth アプリケーションを選択します。
- 左のナビゲーションバーでトークン構成をクリックします。
- Add optional claim をクリックします。
- Add optional claim 画面で、Token type の下のAccess をクリックします。
- Claim カラムの下のupn を選択します。
- 下部の追加をクリックします。
- Turn on the Microsoft Graph profile permission (required for claims to appear in the token) を選択します。
- 追加をクリックします。
- このプロセスをクライアントアプリでも繰り返します。
- 再度接続を試みてください。
Azure Active Directory PKCE
Azure AD PKCE で認証するには、以下のタスクを完了する必要があります。- OAuth アプリケーションの作成と登録
- Redshift Client Application の作成と設定
- 新しいId プロバイダーを定義
- 接続プロパティを指定
以下のセクションでは、これらのタスクについて詳しく説明します。
OAuth アプリケーションの作成と登録
以下の手順で、Azure 経由でAmazon Redshift データベースにログインするためのOAuth アプリケーションを作成します。
- Azure Active Directory 概要 ページにある左のナビゲーションバーで、アプリの登録をクリックします。
- アプリの登録ページ上部の新規登録をクリックします。
- アプリケーションの登録ページで、必要事項を入力します。
- Name に名前を入力します(例:"oauth_application")。
- Redirect URI にPublic client/native (mobile and desktop) を選択し、有効なURL(例:http://localhost:33333/)を入力します。
- ページ下部の登録をクリックします。CallbackURL プロパティ値を保存します。
- 新規に登録したアプリケーションで、左のナビゲーションバーにあるAPI の公開をクリックします。
- アプリケーションID URI の横の設定をクリックします。
- 登録時に入力した情報を含むSet the App ID URI ダイアログが表示されます。保存をクリックします。
- スコープの追加をクリックします。
- 必要事項を入力し、フォーム下部のスコープの追加をクリックします。
- 生成されたApplication ID URI およびAPI scope を保存します(例:api://6256f0b1-2284-43e4-8501-6e53dec4444f およびapi://6256f0b1-2284-43e4-8501-6e53dec4444f/jdbc_login)。
Redshift Client Application の作成と設定
以下の手順に従って、もう1つアプリケーションを作成します。このアプリは、Amazon Redshift データベースのクライアントアプリケーションとして機能します。
- Azure Active Directory 概要 ページで、左のナビゲーションバーからアプリの登録を選択します。
- アプリの登録ページ上部の新規登録をクリックします。
- アプリケーションの登録ページで、必要事項を入力し、ページ下部の登録をクリックします。
- アプリケーションを作成すると、アプリの概要ページが表示されます。左のナビゲーションバーで:
- 証明書とシークレットをクリックします。
- 新しいクライアントシークレットをクリックします。
- クライアントシークレットの追加ウィンドウで、必要事項を追加してウィンドウ下部の追加をクリックします。
- OAuthClientSecret を控えておきます(表示されるOAuth シークレットの値フィールド)。
- クライアントアプリの管理ページの左のナビゲーションバーで:
- API のアクセス許可をクリックします。
- アクセス許可の追加をクリックします。
- Microsoft Graph API を選択します。
- アプリケーションの許可をクリックします。
- Directory -> "Directory.Read.All" を選択します。
- 下部の追加をクリックします。
- 管理者の同意を与えますをクリックします。
- はいをクリックします。
- Azure Active Directory の左のナビゲーションバーで:
- グループをクリックします。
- グループページで、新しいグループをクリックして必要事項を入力します。
- 所有者が選択されていませんをクリックします。
- 所有者を追加ウィンドウが表示されます。ユーザーを選択します。
- 作成をクリックします。
新しいId プロバイダーを定義
次の手順で、新しいId プロバイダーを定義します。
- Azure Active Directory の左のナビゲーションバーでアプリの登録をクリックします。
- すべてのアプリケーションタブを選択し、最初のOAuth アプリケーションを選択します。
- OAuth 画面で、左のナビゲーションバーにあるマニフェストをクリックします。エディターでaccessTokenAcceptedVersion を探します。値がNULL または1の場合、v1.0 トークンです。値が2の場合はv2.0 トークンです。
- Amazon Redshift インスタンスのクエリボックスから、以下の例に従ってId プロバイダのクエリを送信します。
CREATE IDENTITY PROVIDER oauth_standard TYPE azure NAMESPACE 'mynamespace' PARAMETERS '{ "issuer":"https://sts.windows.net/your_tenant_here/", "client_id":"YourRedshiftApplicationClientId", "client_secret":"YourRedshiftApplicationClientSecret" ,"audience":["your_oauth_application_id_uri_here"] }'
v2.0 トークン発行者の場合、この値が必要です。"issuer":"https://login.microsoftonline.com/your_tenant_here/v2.0",
- 用語説明
- issuer ID:トークンを受け取る際に信頼する発行者ID。発行者には、tenant_id の一意な識別子が付加されます。v1.0 トークンを使用する場合、https://sts.windows.net<your_tenant_id_here> を指定します。v2.0 トークンを使用する場合、https://login.microsoftonline.com<your_tenant_id_here>/v2.0. を指定します。
- client_id:Id プロバイダーに登録されたアプリケーションの一意の公開識別子。これをアプリケーションID と呼びます。2つ目のアプリケーション(Amazon Redshift アプリケーション)用に生成されたクライアントID です。
- client_secret:ID プロバイダーおよび登録されたアプリケーションにのみ知られている秘密の識別子、またはパスワード。2つ目のアプリケーション(Amazon Redshift アプリケーション)用に生成されたクライアントシークレットです。
- audience:1つ目のアプリケーション(OAuth アプリケーション)に割り当てられたアプリケーションID(URI)。
- NAMESPACE には好きな名前を使用できます。
- Amazon Redshift で、CREATE IDENTITY PROVIDER クエリ(例として上記)をクエリテキストボックスに配置します。
- クエリボックスの下部にあるRun をクリックします。
- クエリテキストボックスで、以下の形式でRedshift データベース上にロールを作成します。
create role "mynamespace:myazuregroup";
- CREATE IDENTITY PROVIDER クエリで提供されたID プロバイダーの名前空間と、先に作成したAzure グループの名前に置き換えてください。
- クエリボックスの下部にあるRun をクリックします。
- クエリテキストボックスで、この新しいロールに以下のようにテーブルアクセス権を付与します。
grant select on all tables in schema public to role "mynamespace:myazuregroup";
- 上記の例を、自分の名前空間とAzure グループ名に置き換えてください。
- クエリボックスの下部にあるRun をクリックします。
接続プロパティを設定します。
上記の設定を終えたら、Amazon Redshift に接続するドライバーに以下のプロパティを指定します。
- AuthScheme:AzureADPKCE に設定。
- Server:Amazon Redshift サーバーエンドポイントの名前に設定。
- Database:接続するAmazon Redshift データベースの名前に設定。
- Scope:v1.0 OAuth トークンの場合、OAuth アプリケーションのAPI の公開ページにあるスコープフィールドに設定(例:api://d3cb3521-6c20-4e41-b16d-e48c8444ee11/jdbc_login)。v2.0 OAuth トークンの場合は、OAuth アプリケーションのクライアントID と同じです(例:d3cb3521-6c20-4e41-b16d-e48c8444ee11)。
- OAuthClientId:作成したOAuth アプリケーションの概要ページにある、アプリケーション(クライアント)ID に設定。
- CallbackURL:OAuth アプリのコールバックURL に設定。
トラブルシューティング
"Azure JWT token does not have 'upn' field" エラーが発生した場合、以下の手順に従います。
- Azure Active Directory 管理ページで、アプリの登録に移動し、自身のOAuth アプリケーションを選択します。
- 左のナビゲーションバーでトークン構成 -> Add Optional claim を選択します。
- Add optional claim 画面で、"Token type" の下のAccess をクリックします。
- Claim カラムの下のupn を選択します。
- 下部の追加をクリックします。
- トークンにクレームが表示されるために必要な、Turn on the Microsoft Graph profile permission を選択します。
- 追加をクリックします。
- このプロセスをクライアントアプリでも繰り返します。
- 再度接続を試みてください。
標準認証
Amazon Redshift にログイン資格情報で接続するには、AuthScheme をBasic に設定します。 加えて、以下の接続プロパティを設定します。
- User:Amazon Redshift サーバーに認証する際に使われるユーザー。
- Password:Amazon Redshift サーバーに認証する際に使われるパスワード。
AuthScheme=Basic;User=user;Password=password;Server=example.us-west-2.redshift.amazonaws.com;Database=your_database;
IAM credentials
AuthScheme をIAMCredentials に設定します。次は接続文字列の例です。
AuthScheme=IAMCredentials;Server=example.us-west-2.redshift.amazonaws.com;Database=your_database;User=your_user;AWSAccessKey=your_access_key;AWSSecretKey=your_secretkey;
一時的な資格情報を使用してIAM ロールで接続している場合は、AWSSessionToken も適用する必要があります。
オプションで以下を適用できます。
- AutoCreate:接続中にデータベースユーザーが存在しない場合は、User に指定した名前でデータベースユーザーを作成します。
- DbGroups:データベースユーザーが現在のセッションに参加するデータベースグループ。
ADFS
ADFS に接続するには、AuthScheme をADFS に設定し、次のプロパティを設定します。
- User:ADFS ユーザー。
- Password:ADFS ユーザーのパスワード。
- SSOLoginURL:SSO プロバイダーのログインURL。
接続文字列の例:
AuthScheme=ADFS;User=username;Password=password;SSOLoginURL='https://sts.company.com';
ADFS 統合
ADFS 統合フローでは、現在ログインしているWindows ユーザーの資格情報で接続します。 ADFS 統合フローを使用するには、User およびPassword を指定せず、それ以外の設定は上記のADFS ガイドと同じ手順を実行してください。
PingFederate に接続するには、AuthScheme をPingFederate に設定し、次のプロパティを設定します。
- User:PingFederate ユーザー。
- Password:PingFederate ユーザーのパスワード。
- SSOLoginURL:SSO プロバイダーのログインURL。
- AWSRoleARN(オプション):複数のロールARN がある場合は、認可に使用するARN を指定します。
- AWSPrincipalARN(オプション):複数のプリンシパルARN がある場合は、認可に使用するARN を指定します。
- SSOProperties(オプション):Amazon S3へのリクエストにユーザー名とパスワードを認可ヘッダーとして含める場合は、Authscheme=Basic。
SSOLoginURL 用の相互SSL 認証(WS-Trust STS エンドポイント)を有効化するには、次の SSOProperties を設定します。
- SSLClientCert
- SSLClientCertType
- SSLClientCertSubject
- SSLClientCertPassword
接続文字列の例:
Server=redshift-cluster-1.xxxxxxxxxxxx.us-east-1.redshift.amazonaws.com;Database=dev;Port=5439;UseSSL=true;SSLServerCert=*;AuthScheme=PingFederate;AutoCreate=TRUE;SSOLoginURL=https://mycustomserver.com:9033/idp/sts.wst;SSOExchangeUrl=https://us-east-1.signin.aws.amazon.com/platform/saml/acs/764ef411-xxxxxx;User=admin;Password=PassValue;AWSRegion=NORTHERNVIRGINIA;
接続プロパティ
最後に、Connection プロパティを参照してください。接続の確立に使用できるさまざまなオプションの説明があります。
接続の管理
Amazon Redshift への認証に成功すると、インポートするデータをカスタマイズすることができます。詳しくは、接続の管理 を参照してください。
関連項目
- データのクエリ:[データ選択]ウィザードを使用してスプレッドシートにデータをプルします。また、ここではスケジュールされたデータのリフレッシュも設定できます。
- Excel アドインの使用:利用可能なCData Excel 関数 を使用するなど、Amazon Redshift データとやり取りする他の方法が見つかります。