Power BI에 대한 자격 증명을 프로그래밍 방식으로 구성Configure credentials programmatically for Power BI

Power BI에 대한 자격 증명을 프로그래밍 방식으로 구성하려면 이 문서의 단계를 따르세요.Follow the steps in this article, to configure credentials programmatically for Power BI.

참고

  • 호출하는 사용자는 데이터 세트 소유자 또는 게이트웨이 관리자여야 합니다. 서비스 주체를 사용할 수도 있습니다.The calling user must be a dataset owner, or a gateway admin. You can also use a service principal. 예를 들어 서비스 주체는 데이터 세트 소유자일 수 있습니다.For example, the service principal can be the dataset owner.
  • 클라우드 데이터 원본과 해당 자격 증명은 사용자 수준에서 관리됩니다.Cloud data sources and their corresponding credentials are managed at the user level.

데이터 원본에 대한 자격 증명 흐름 업데이트Update credentials flow for data sources

  1. 데이터 원본 가져오기를 호출하여 데이터 세트의 데이터 원본을 검색합니다.Call Get Datasources to discover the data sources of the dataset. 각 데이터 원본의 응답 본문에는 형식, 연결 세부 정보, 게이트웨이 및 데이터 원본 ID가 있습니다.In the response body for each data source, are the type, connection details, gateway, and data source ID.

    // Select a datasource
    var datasources = pbiClient.Datasets.GetDatasources(datasetId).Value;
    var datasource = datasources.First();
    
  2. 자격 증명 형식과 데이터 원본 업데이트 예제에 따라 자격 증명 문자열을 빌드합니다.Build credentials string according to Update Datasource Examples depending on the credentials type.

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

    참고

    클라우드 데이터 원본을 사용 중인 경우에는 이 섹션의 다음 단계를 수행하지 마세요.If you're using cloud data sources don't follow the next steps in this section. 1단계에서 얻은 게이트웨이 ID 및 데이터 원본 ID를 사용해 데이터 원본 업데이트를 호출하여 자격 증명을 설정합니다.Set the credentials using the gateway ID and data source ID obtained in step 1, by calling Update Datasource.

  3. 게이트웨이 가져오기를 호출하여 게이트웨이 공용 키를 검색합니다.Call Get Gateway to retrieve the gateway public key.

    var gateway = pbiClient.Gateways.GetGatewayById(datasource.GatewayId);
    
  4. 자격 증명을 암호화합니다.Encrypt the credentials.

    var credentialsEncryptor = new AsymmetricKeyEncryptor(gateway.publicKey);
    
  5. 암호화된 자격 증명을 사용하여 자격 증명 세부 정보를 빌드합니다.Build credential details with encrypted credentials.

    3단계 에서 검색된 공개 키를 통해 AssymetricKeyEncryptor 클래스를 사용합니다.Use the AssymetricKeyEncryptor class with the public key retrieved in Step 3.

    var credentialDetails = new CredentialDetails(
            credentials,
            PrivacyLevel.Private,
            EncryptedConnection.Encrypted,
            credentialsEncryptor);
    
  6. 데이터 원본 업데이트를 호출하여 자격 증명을 설정합니다.Call Update Datasource to set credentials.

    pbiClient.Gateways.UpdateDatasource(gatewayId, datasourceId, credentialDetails);
    

데이터 게이트웨이에 대한 새 데이터 원본 구성Configure a new data source for a data gateway

  1. 머신에 온-프레미스 데이터 게이트웨이를 설치합니다.Install the On-premises data gateway on your machine.

  2. 게이트웨이 가져오기를 호출하여 게이트웨이 ID 및 공용 키를 검색합니다.Call Get Gateways to retrieve the gateway ID and public key.

    // Select a gateway
    var gateways = pbiClient.Gateways.GetGateways().Value;
    var gateway = gateways.First();
    
  3. 2단계 에서 검색된 게이트웨이 공개 키를 사용하여 데이터 원본에 대한 자격 증명 흐름 업데이트에 설명된 것과 동일한 방법으로 자격 증명 정보를 빌드합니다.Build credential details in the same way as described in update credentials flow for data sources, using the gateway public key retrieved in step 2.

  4. 요청 본문을 빌드합니다.Build the request body.

    var request = new PublishDatasourceToGatewayRequest(
            dataSourceType: "SQL",
            connectionDetails: "{\"server\":\"myServer\",\"database\":\"myDatabase\"}",
            credentialDetails: credentialDetails,
            dataSourceName: "my sql datasource");
    
  5. 데이터 원본 만들기 API를 호출합니다.Call the Create Datasource API.

    pbiClient.Gateways.CreateDatasource(gateway.Id, request);
    

자격 증명 유형Credential types

Power BI Rest API를 사용하여 엔터프라이즈 온-프레미스 게이트웨이 에서 데이터 원본 만들기 또는 데이터 원본 업데이트를 호출할 때, 자격 증명 값이 게이트웨이의 공개 키를 사용하여 암호화해야 합니다.When you call Create Datasource or Update Datasource under an enterprise on-prem gateway using Power BI Rest API, the credentials value needs to be encrypted using the gateway's public key.

참고

.NET SDK v3 역시 아래에 나열된 .NET SDK v2 예제를 실행할 수 있습니다..NET SDK v3 can also run the .NET SDK v2 examples listed below.

Windows 및 기본 자격 증명Windows and basic credentials

// 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);

키 자격 증명Key credentials

var credentials = new KeyCredentials("TestKey");
var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);

OAuth2 자격 증명OAuth2 credentials

var credentials = new OAuth2Credentials("TestToken");
var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);

익명 자격 증명Anonymous credentials

var credentials = new AnonymousCredentials();
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.NotEncrypted);

문제 해결Troubleshooting

데이터 원본 가져오기를 호출할 때 게이트웨이 및 데이터 원본 ID를 찾을 수 없음No gateway and data source ID found when calling get data sources

이 문제는 데이터 세트가 게이트웨이에 바인딩되지 않았음을 의미합니다.This issue means the dataset isn't bound to a gateway. 새 데이터 세트를 만들 때 각 클라우드 연결에 대해 자격 증명이 없는 데이터 원본이 사용자의 클라우드 게이트웨이에 자동으로 생성됩니다.When creating a new dataset, for each cloud connection a data source with no credentials is created automatically on the user's cloud gateway. 이 게이트웨이는 클라우드 연결에 대한 자격 증명을 저장하는 데 사용됩니다.This gateway is used to store the credentials for cloud connections.

데이터 세트를 만든 후에는 데이터 세트와 적절한 게이트웨이 간에 자동 바인딩이 만들어집니다. 이 게이트웨이에는 모든 연결에 대해 일치하는 데이터 원본이 포함되어 있습니다.After you create the dataset, an automatic binding is created between the dataset and a suitable gateway, which contains matching data sources for all connections. 이러한 게이트웨이나 여러 개의 적합한 게이트웨이가 없으면 자동 바인딩이 실패합니다.If there's no such gateway or multiple suitable gateways, the automatic binding fails.

온-프레미스 데이터 세트를 사용하는 경우 누락된 온-프레미스 데이터 원본을 만들고 게이트웨이에 바인딩을 사용하여 수동으로 데이터 세트를 게이트웨이에 바인딩합니다.If you're using on-premises datasets, create the missing on-premises data sources, and bind the dataset to a gateway manually by using Bind To Gateway.

바인딩될 수 있는 게이트웨이를 검색하려면 게이트웨이 검색을 사용합니다.To discover gateways that could be bound, use Discover Gateways.