2017-07-27 62 views
0

假設我有我的PowerShell代碼,它對Azure訂閱採取特定的操作。我知道必須使用我的Azure用戶名或Azure服務主體登錄Azure。如何在PowerShell中保護Azure服務主體代碼

在我的情況下,我想使用服務負責人,因爲很多人都會使用此代碼,我不想讓每個人都可以訪問我的訂閱。所以我只能訪問這個SP。

我意識到,要使用SP登錄,我需要在我的代碼中包含應用程序ID和密鑰,並且如果我的代碼遭到入侵,那麼來自我們公司外部的人員也可以使用應用程序ID和密鑰進行登錄在和做我的訂閱的東西。

有沒有什麼辦法可以保護自己免受這種安全風險?我看到還有一個關於Azure AD的部分,我可以指定可以訪問服務主體(Azure App)的用戶/組。但它會更像是一個雙重認證?你能指點我正確的方向嗎?

如果你還可以與我分享一些示例代碼,將非常感謝。

+3

設置服務主體以通過證書進行登錄,並將證書與腳本一起分發,並以此方式進行身份驗證。然後,如果有外部人員將他們的手放在您的腳本上,他們就不能在沒有證書的情況下使用它來影響您的訂閱。 – TheMadTechnician

+0

證書的使用也不會消除風險 – iSi

+0

@TheMadTechnician我同意TheMadtechnician。您使用證書創建服務主體,並將證書提供給您信任的人員。使用服務主體+證書登錄您的訂閱。 '$ Certs = Get-ChildItem cert:\ CurrentUser \ My \ | Where-Object {$ _。Subject -match $ CertificateName}; Add-AzureRmAccount -ServicePrincipal -CertificateThumbprint $ Cert.Thumbprint -ApplicationId $ ServicePrincipalApplicationId -TenantId $ TenantId' –

回答

0

老實說,請不要這樣做。任何獲得證書訪問權的人(如果您使用您的代碼進行分發)也可以作爲Azure的服務負責人訪問。

我建議你創建一個Azure自動化操作手冊並附上一個webhook它。然後你可以創建一個小的html文件來執行runbook(提示你需要的任何參數)。這樣,用戶只能運行您設置的代碼(通過webhook),並且可以定期循環webhook url(通過刪除它並重新創建一個新的url)。

+0

問題是代碼執行的操作太危險,這意味着如果有人訪問網頁,他們有可能執行它,應該避免。我希望在通過SP執行代碼之前有一個額外的身份驗證層... – iSi

+1

https://docs.microsoft.com/en-us/azure/automation/automation-webhooks#security TLDR:您可以添加一個pre -shardkey或消息正文中的其他驗證形式,並編寫邏輯來處理它。 – CtrlDot

+0

感謝您的鏈接。我猜一切都有自己的風險......只是想盡可能地減少它......任何想法什麼是Azure AD應用程序(SP)中的訪問列表?可能與這種情況有關? – iSi