Power BI 用の資格情報をプログラムで構成する

適用対象: アプリ所有データ ユーザー所有データ

Power BI 用の資格情報をプログラムで構成するには、この記事内の手順に従ってください。 資格情報をプログラムで構成すると、資格情報を暗号化することもできます。

Note

  • 呼び出し元のユーザーは、セマンティック モデルの所有者であるかゲートウェイ管理者である必要があります。サービス プリンシパルを使用することもできます。 たとえば、サービス プリンシパルをセマンティック モデルの所有者にすることができます。
  • クラウド データ ソースとそれに対応する資格情報は、ユーザー レベルで管理されます。

データ ソースの資格情報フローを更新する

  1. Get Datasources を呼び出して、セマンティック モデルのデータ ソースを検出します。 各データ ソースの応答本文には、種類、接続の詳細、ゲートウェイ、およびデータ ソース ID が含まれています。

    // Select a datasource
    var datasources = pbiClient.Datasets.GetDatasources(datasetId).Value;
    var datasource = datasources.First();
    
  2. Update Datasource の例に従って資格情報文字列を構築します。 資格情報文字列の内容は、その資格情報の種類によって異なります。

    var credentials =  new BasicCredentials(username: "username", password :"*****");
    

    注意

    クラウド データ ソースを使用している場合、このセクションの後続手順には従わないでください。 Update Datasource を呼び出し、手順 1 で取得したゲートウェイ ID とデータ ソース ID を使用して資格情報を設定します。

  3. Get Gateway を呼び出して、ゲートウェイの公開キーを取得します。

    var gateway = pbiClient.Gateways.GetGatewayById(datasource.GatewayId);
    
  4. 資格情報を暗号化します。

    var credentialsEncryptor = new AsymmetricKeyEncryptor(gateway.publicKey);
    
  5. 暗号化された資格情報を使用して、資格情報の詳細を作成します。

    手順 3 で取得した公開キーを指定して AsymetricKeyEncryptor クラスを使用します。

    var credentialDetails = new CredentialDetails(
            credentials,
            PrivacyLevel.Private,
            EncryptedConnection.Encrypted,
            credentialsEncryptor);
    
  6. Update Datasource を呼び出して資格情報を設定します。

    pbiClient.Gateways.UpdateDatasource(datasource.GatewayId.Value, datasource.DatasourceId.Value, new UpdateDatasourceRequest(credentialDetails));
    

データ ゲートウェイに対して新しいデータ ソースを構成する

  1. ご利用のコンピューター上にオンプレミス データ ゲートウェイをインストールします。

  2. Get Gateways を呼び出して、ゲートウェイの ID と公開キーを取得します。

    // Select a gateway
    var gateways = pbiClient.Gateways.GetGateways().Value;
    var gateway = gateways.First();
    
  3. 手順 2 で取得したゲートウェイの公開キーを使用して、「データ ソースの資格情報フローを更新する」セクションで説明されている手順に従って、資格情報の詳細を作成します。

  4. 要求本文を作成します。

    var request = new PublishDatasourceToGatewayRequest(
            dataSourceType: "SQL",
            connectionDetails: "{\"server\":\"myServer\",\"database\":\"myDatabase\"}",
            credentialDetails: credentialDetails,
            dataSourceName: "my sql datasource");
    
  5. 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 を使用します。