2017-05-02 4 views
3

Azure Key Vaultにアクセスして資格情報を取得するカスタム抽出ツールを使用したU-SQLスクリプトがあります。Azure Key VaultにAzure Data Lake Analyticsからアクセスできない

私は、this tutorialに続いた。そして、私はADからトークンを取得すると、実際の資格情報のURIを提供コールする同等のコードがあります。

public static async Task<string> GetToken(string authority, string resource, string scope) 
{ 
    var authContext = new AuthenticationContext(authority); 
    var clientCred = new ClientCredential(applicationId, authenticationKey); 
    AuthenticationResult result = await authContext.AcquireTokenAsync(resource, clientCred); 
    if (result == null) 
    { 
     throw new InvalidOperationException("Failed to obtain the AD token"); 
    } 
    return result.AccessToken; 
} 

public static async Task<string> GetSecret(string secretUri) 
{ 
    var keyVaultClient = new KeyVaultClient(
      new KeyVaultClient.AuthenticationCallback(GetToken) 
    ); 
    var sec = await keyVaultClient.GetSecretAsync(secretUri); 
    return sec.Value; 
} 

を私の資格情報が正常に保管庫に入れて、私はそれらにアクセスするためのURIを持っている - のようなもの:

https://my-key-vault-name.vault.azure.net:443/secrets/MyCredentialsName/123abc 

私はAzure ADで自分のアプリを登録していましたが、アプリケーションIDと認証キーを取得していました。私のアプリはキーボルトから秘密を読み取ることができました。私のU-SQLスクリプトでは、必要なアセンブリをすべて参照しました。

ローカルでスクリプトを実行すると、ローカルマシンからADとKey Vaultへの接続は問題ありませんが、リモートData Lake Analyticsアカウントで実行するために送信すると、次のエラーが表示されます。

Azureのリソース・グループの

The remote name could not be resolved: 'my-key-vault-name.vault.azure.net'

at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)

私の管理者権限が限られているが、私は、データ湖解析をブレードにファイアウォール]タブにアクセスすることができます - 私は/ Allow access to Azure servicesをオフに切り替え、ファイアウォールを有効化および無効化しようとした、まだエラーが解消されません。

依存関係として、私はMicrosoft.Azure.KeyVault 2.0.6,Microsoft.Azure.KeyVaultWebKey 2.0.4Microsoft.IdentityModel.Clients.ActiveDirectory 3.13.9を参照しています。

解決方法を教えてください。

答えて

3

ADLAで実行されているU-SQLコードでは、コンテナ/ VM外のリソースに接続することはできません。理由は次のとおりです。

U-SQLのカスタムコード呼び出しは、おそらく100〜1000sのコンテナを呼び出して、何百万行も呼び出されます。これにより、到達しようとしているサービスに対してサービス妨害攻撃(望ましくない意図しない)が発生する可能性があります。サービスをDDoSし、Azure IP範囲をブロックする可能性があります。

ローカルランは現在コンテナ内で実行されていないため、このような制限はありません。

この呼び出しで何を達成しようとしていますか?ストレージ内のデータはAzure Key Vaultで既に透過的にエンコードされていることに注意してください。

+0

私はファイルを暗号化しており、このスクリプトを使用する予定のData Fabric Pipelineで復号化したいと考えています。私の抽出器ではatomicFileProcessing = trueを持っているので、私の場合はDDOSの可能性はないと思う。カスタムu-sqlパイプラインの代替案を検討します。 – arghtype

+0

あなたの場合、DDOSの可能性はありません。残念ながら(この場合)、ユーザコードは私たちのコントロールの外で多くのことを行うことができます。 –

+1

返信ありがとう、Azureバッチでカスタム.netアクティビティを使用して復号化ロジックをパイプラインに移動しました – arghtype

関連する問題