我有一個帶有自定義提取程序的U-SQL腳本,該腳本訪問Azure密鑰保險庫以獲取某些憑據。無法從Azure Data Lake Analytics訪問Azure密鑰保險庫
我跟着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和密鑰保險庫都可以),但是當我在遠程Data Lake Analytics帳戶上提交它時,出現以下錯誤:
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)
我Azure上的資源組的管理權限是有限的,但我可以在數據分析湖刀片出入防火牆選項卡 - 我已經嘗試了啓用和禁用防火牆,開啓/關閉Allow access to Azure services
,仍繼續發生錯誤。
作爲依賴關係,我參考Microsoft.Azure.KeyVault 2.0.6
,Microsoft.Azure.KeyVaultWebKey 2.0.4
,Microsoft.IdentityModel.Clients.ActiveDirectory 3.13.9
。
關於如何嘗試解決它的任何想法?
我有加密的文件,我想在Data Fabric Pipeline中解密它們,我計劃使用這個腳本。在我的提取器中,我有atomicFileProcessing = true,所以我認爲在我的情況下不存在DDOS的可能性。我會考慮替代定製u-sql管道。 – arghtype
就你而言,它可能沒有DDOS潛力。不幸的是(在這種情況下),用戶代碼可以做很多我們無法控制的事情。 –
感謝您的回覆,我已將解密邏輯移至使用Azure批處理中的自定義.net活動的管道 – arghtype