Linux DSN の構成
このセクションでは、以下のいくつかのLinux ディストリビューションでODBC 接続をセットアップしDSN を設定する方法を説明します:Ubuntu のようなDebian ベースのシステム、Red Hat Enterprise Linux (RHEL)、CentOS、およびFedora のようなRed Hat Linux プラットフォーム。
Linux の最小バージョン
Red Hat ベースおよびDebian ベースシステムでサポートされる最小バージョンは以下のとおりです。
| OS | Min. Version |
| Ubuntu | 11.04 |
| Debian | 7 |
| RHEL | 6.9 |
| CentOS | 6.9 |
| Fedora | 13 |
| SUSE | 12.1 |
ドライバー依存関係のインストール
必要な依存関係をインストールするには、次のコマンドをルートとしてまたはsudo で実行します。
- Debian/Ubuntu:
apt-get install libc6 libstdc++6 zlib1g libgcc1
- RHEL/CentOS/Fedora:
yum install glibc libstdc++ zlib libgcc
本製品 が必要とする対応ライブラリは以下のとおりです。
| Debian/Ubuntu Package | RHEL/CentOS/Fedora Package | File |
| libc6 | glibc | linux-vdso.1 |
| libc6 | glibc | libm.so.6 |
| libc6 | glibc | librt.so.1 |
| libc6 | glibc | libdl.so.2 |
| libc6 | glibc | libpthread.so.0 |
| libc6 | glibc | libc.so.6 |
| libc6 | glibc | ld-linux-x86-64.so.2 |
| libstdc++6 | libstdc++ | libstdc++.so.6 |
| zlib1g | zlib | libz.so.1 |
| libgcc1 | libgcc | libgcc_s.so.1 |
ドライバーのインストール
標準のパッケージ管理システムを使用してドライバーをインストールできます。
Ubuntu のようなDebian ベースのシステムでは、次のコマンドをroot またはsudo で実行します。
dpkg -i /path/to/driver/setup/RedshiftODBCDriverforUnix.deb
RPM パッケージ形式をサポートするシステムでは、次のコマンドをroot またはsudo で実行します。
rpm -ivh /path/to/driver/RedshiftODBCDriverforUnix.rpm
ドライバーのライセンス
次のコマンドを実行して本製品 のライセンスを取得します。評価版をアクティベートするには、<key> の入力を省略してください。
cd /opt/cdata/cdata-odbc-driver-for-redshift/bin/
sudo ./install-license.sh <key>
ドライバーマネージャー経由の接続
ドライバーマネージャーはドライバーをロードし、アプリケーションからドライバーに関数呼び出しを渡します。本製品 をドライバーマネージャーに登録して、ドライバーマネージャーのコンフィギュレーションファイルにDSN を定義する必要があります。
本製品 のインストールでは、本製品 をunixODBC ドライバーマネージャーに登録し、システムDSN を作成します。UnixODBC ドライバーマネージャーは、Python やその他多くのアプリケーションから使用できます。アプリケーションに別のドライバーマネージャーが組み込まれている可能性があります。
DSN の作成
unixODBC をインストールしてDSN を設定するには、unixODBC の使用 を参照してください。OBIEE、Informatica、およびSAS に接続するDSN を作成するには、DataDirect ドライバーマネージャーの使用 を参照してください。
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;
ドライバーエンコーディングの設定
ODBC ドライバーは、ODBC ドライバーマネージャーで使用するエンコーディングを指定する必要があります。デフォルトでは、Unix 用のCData ODBC ドライバーはunixODBC と互換性のあるUTF-16 を使用するように設定されていますが、他のドライバーマネージャーでは代替エンコーディングが必要な場合があります。
また、ANSI ODBC API を使用するアプリケーションからODBC ドライバーを使用している場合は、ANSI コードページを設定する必要があります。例えば、ANSI アプリケーションに日本語の文字をインポートするには、設定ファイル'/opt/cdata/cdata-odbc-driver-for-redshift/lib/cdata.odbc.redshift.ini' でコードページを指定できます。
[Driver]
AnsiCodePage = 932