2017-07-27 7 views
0

私のAzureサブスクリプションで特定のアクションをとるPowerShellコードを持っているとしましょう。私はそれが私の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 Automationのランニングブックを作成し、webhookを添付することをお勧めします。 runbookを実行する小さなhtmlファイルを作成することができます(必要なパラメータを入力するよう促す)。こうすることで、ユーザーは設定したコード(webhook経由)のみを実行でき、webhook URLを定期的に(削除して新しいものを作成して)循環させることができます。

+0

問題は、コードが実行するアクションが危険すぎるということです。つまり、誰かがWebページにアクセスして実行する可能性があるため、回避する必要があります。私は彼らがSPを介してコードを実行する前に追加の認証層を望んでいました... – iSi

+1

https://docs.microsoft.com/en-us/azure/automation/automation-webhooks#security TLDR: -shardkeyまたは他の検証フォームをメッセージ本文に追加し、それを処理するロジックを記述します。 – CtrlDot

+0

リンクありがとうございました。私はすべてがそれ自身のリスクを持っていると思う...それを可能な限り減らしたい... Azure ADアプリケーション(SP)のアクセスリストは何ですか?このシナリオに関連している可能性がありますか? – iSi

関連する問題