Power BI 用の資格情報をプログラムで構成する
適用対象: アプリ所有データ ユーザー所有データ
Power BI 用の資格情報をプログラムで構成するには、この記事内の手順に従ってください。 資格情報をプログラムで構成すると、資格情報を暗号化することもできます。
Note
- 呼び出し元のユーザーは、セマンティック モデルの所有者であるかゲートウェイ管理者である必要があります。サービス プリンシパルを使用することもできます。 たとえば、サービス プリンシパルをセマンティック モデルの所有者にすることができます。
- クラウド データ ソースとそれに対応する資格情報は、ユーザー レベルで管理されます。
データ ソースの資格情報フローを更新する
Get Datasources を呼び出して、セマンティック モデルのデータ ソースを検出します。 各データ ソースの応答本文には、種類、接続の詳細、ゲートウェイ、およびデータ ソース ID が含まれています。
// Select a datasource var datasources = pbiClient.Datasets.GetDatasources(datasetId).Value; var datasource = datasources.First();
Update Datasource の例に従って資格情報文字列を構築します。 資格情報文字列の内容は、その資格情報の種類によって異なります。
var credentials = new BasicCredentials(username: "username", password :"*****");
注意
クラウド データ ソースを使用している場合、このセクションの後続手順には従わないでください。 Update Datasource を呼び出し、手順 1 で取得したゲートウェイ ID とデータ ソース ID を使用して資格情報を設定します。
Get Gateway を呼び出して、ゲートウェイの公開キーを取得します。
var gateway = pbiClient.Gateways.GetGatewayById(datasource.GatewayId);
資格情報を暗号化します。
var credentialsEncryptor = new AsymmetricKeyEncryptor(gateway.publicKey);
暗号化された資格情報を使用して、資格情報の詳細を作成します。
手順 3 で取得した公開キーを指定して AsymetricKeyEncryptor クラスを使用します。
var credentialDetails = new CredentialDetails( credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);
Update Datasource を呼び出して資格情報を設定します。
pbiClient.Gateways.UpdateDatasource(datasource.GatewayId.Value, datasource.DatasourceId.Value, new UpdateDatasourceRequest(credentialDetails));
データ ゲートウェイに対して新しいデータ ソースを構成する
ご利用のコンピューター上にオンプレミス データ ゲートウェイをインストールします。
Get Gateways を呼び出して、ゲートウェイの ID と公開キーを取得します。
// Select a gateway var gateways = pbiClient.Gateways.GetGateways().Value; var gateway = gateways.First();
手順 2 で取得したゲートウェイの公開キーを使用して、「データ ソースの資格情報フローを更新する」セクションで説明されている手順に従って、資格情報の詳細を作成します。
要求本文を作成します。
var request = new PublishDatasourceToGatewayRequest( dataSourceType: "SQL", connectionDetails: "{\"server\":\"myServer\",\"database\":\"myDatabase\"}", credentialDetails: credentialDetails, dataSourceName: "my sql datasource");
Create Datasource API を呼び出します。
pbiClient.Gateways.CreateDatasource(gateway.Id, request);
資格情報の種類
エンタープライズ オンプレミス ゲートウェイの Power BI REST API から Create Datasource または Update Datasource を呼び出す場合は、ゲートウェイの公開キーを使用して資格情報の値を暗号化します。
注意
.NET SDK v3 では、次の .NET SDK v2 の例も実行できます。
Windows 資格情報と基本資格情報
// Windows credentials
var credentials = new WindowsCredentials(username: "john", password: "*****");
// Or
// Basic credentials
var credentials = new BasicCredentials(username: "john", password: "*****");
var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);
キー資格情報
var credentials = new KeyCredentials("TestKey");
var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);
OAuth2 資格情報
var credentials = new OAuth2Credentials("TestToken");
var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);
匿名資格情報
var credentials = new AnonymousCredentials();
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.NotEncrypted);
トラブルシューティング
get data sources の呼び出し時にゲートウェイとデータ ソース ID が見つかりません
この問題は、セマンティック モデルがゲートウェイにバインドされていないことを意味します。 新しいセマンティック モデルを作成すると、クラウド接続ごとに、資格情報を持たないデータ ソースがユーザーのクラウド ゲートウェイ上に自動的に作成されます。 クラウド ゲートウェイは、クラウド接続用の資格情報を格納するために使用されます。
セマンティック モデルを作成したら、セマンティック モデルと適切なゲートウェイとの間でバインドが自動的に作成されます。これには、すべての接続についてのデータ ソースの照合も含まれます。 適切なゲートウェイがない場合、自動バインドは失敗します。
オンプレミスのセマンティック モデルを使用している場合は、不足しているオンプレミスのデータ ソースを作成し、Bind To Gateway を使用してセマンティック モデルをゲートウェイに手動でバインドします。
バインド可能なゲートウェイを検出するには、Discover Gateways を使用します。