接続の確立
Amazon Redshift 接続マネージャーで接続
新しいAmazon Redshift 接続は、SSIS パッケージに簡単に追加できます。[接続マネージャー]ウィンドウ内を右クリックし、メニューから[新しい接続]を選択します。次に、[SSIS 接続マネージャーの追加]ウィンドウから[Amazon Redshift 接続マネージャー]を選択します。
または、Amazon Redshift 変換元またはAmazon Redshift 変換先を使用して、新しい接続を直接作成できます。[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
Note: B2C 以外のAzure テナントのみがAzure AD 認証スキームを完了できます。
Note: 有効なAzure AD アカウントが必要です。有効なアカウントがない場合は、このプロセスを始める前にアカウントを作成してください。
- はじめに、Azure 経由でAmazon Redshift データベースにログインするためのOAuth アプリを作成します。Azure Active Directory 概要 ページにある左のナビゲーションバーで:
- アプリの登録をクリックします。
- アプリの登録ページ上部の新規登録をクリックします。
- アプリケーションの登録ページで、必要事項を入力し、ページ下部の登録をクリックします。CallbackURL を控えておきます。
- 新規に登録したアプリケーションで、左のナビゲーションバーにあるAPI の公開をクリックします。
- アプリケーションID URI の横の設定をクリックします。
- 登録時に入力した情報を含むSet the App ID URI ダイアログが表示されます。保存をクリックします。
- Add a scope をクリックします。
- 必要事項を入力し、フォーム下部のスコープの追加をクリックします。
- 次に、もう1つOAuth アプリを作成します。このアプリは、Amazon Redshift データベースのクライアントアプリケーションとして機能します。左のナビゲーションバーでアプリの登録をクリックします。
- Azure Active Directory 管理ページから、アプリの登録ページ上部の新規登録をクリックします。
- アプリケーションの登録ページで、必要事項を入力し、ページ下部の登録をクリックします。
- アプリを作成すると、アプリの概要ページが表示されます。左のナビゲーションバーで:
- 証明書とシークレットをクリックします。
- 新しいクライアントシークレットをクリックします。
- クライアントシークレットの追加ウィンドウで、必要事項を追加してウィンドウ下部の追加をクリックします。
- OAuthClientSecret を控えておきます(表示されるOAuth シークレットの値フィールド)。
- クライアントアプリの管理ページの左のナビゲーションバーで:
- API のアクセス許可をクリックします。
- アクセス許可の追加をクリックします。
- Microsoft Graph API を選択します。
- アプリケーションの許可をクリックします。
- クライアントアプリのアクセス許可をDirectory.Read.All に設定します。
- 下部のアクセス許可の追加をクリックします。
- 管理者の同意を与えますをクリックします。
- はいをクリックします。
- Azure Active Directory の左のナビゲーションバーで:
- グループをクリックします。
- グループページで、新しいグループをクリックして必要事項を入力します。
- 所有者が選択されていませんをクリックします。
- 所有者を追加ウィンドウが表示されます。ユーザーを選択します。
- 作成をクリックします。
- 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 と呼びます。
- client_secret: ID プロバイダーおよび登録されたアプリケーションにのみ知られている秘密の識別子、またはパスワード。
- audience: 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 クライアントアプリの「概要」ページにある、アプリケーション(クライアント)ID に設定。
- OAuthClientSecret:クライアントアプリの証明書とシークレットページで作成時に指定された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 token) を選択します。
- 追加をクリックします。
- このプロセスをクライアントアプリでも繰り返します。
- 再度接続を試みてください。
標準認証
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
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 がある場合、認可に使用したいものをオプションで指定できます。
- AWSPrincipalARN (オプション):複数のプリンシパルARN がある場合、認可に使用したいものをオプションで指定できます。
- SSOProperties (オプション):Amazon S3 へのリクエストにユーザー名とパスワードを認可ヘッダーとして含めたい場合は、オプションで"AuthScheme=Basic" に設定できます。
追加で次のSSOProperties を使って、SSOLoginURL 用の相互SSL 認証(WS-Trust STS エンドポイント)の設定が可能です。
- 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;