C# を使用して Azure Service Management APi に接続しようとしていますが、例 ( https://msdn.microsoft.com/en-gb/library/azure/ee460782.aspx ) が機能する唯一の方法は、対話型認証を使用する場合です。 Azure のユーザー名とパスワードを入力する必要があります。worker ロール内からこのメソッドを呼び出す必要があるため、これは不可能です。これを行う方法はありますか?
1 に答える
worker ロール内からこのメソッドを呼び出す必要があるため、これは不可能です。これを行う方法はありますか?
それには 2 つの方法があります。
Connect to your Azure Subscription using X509 Certificate
: Azure の方向性に基づいて推奨されていませんが、オプションです。Create a user in Azure AD just for executing Service Management API
: このアプローチでは、Azure AD でユーザーを作成します。次に、このユーザーに Azure サブスクリプションのロールを割り当てCo-Admin
ます (どちらも古い Azure ポータルを介して行う必要があります)。これを行ったら、コードでユーザー名/パスワードを指定してトークンを取得する必要があります。以下のようなもの:var authContext = new AuthenticationContext("https://login.microsoftonline.com/{tenantid}") UserCredential userCredential = new UserCredential(userName, password); AuthenticationResult authResult = authContext.AcquireToken("https://management.core.windows.net/", clientId, userCredential);
ただし、次の点に注意してください。
- Azure Portal を使用してユーザーを作成する場合は、そのユーザーを使用して少なくとも 1 回サインインするようにしてください。この場合、ユーザーは最初のログイン時にパスワードを変更する必要があります。また、ユーザーのパスワードが期限切れにならないようにしてください。直接使用
Graph API
すると、これらを達成できると思います。 - ユーザー資格情報をコードに入れることには、いくつかの大きなリスクがあります。誰かがこのユーザー名/パスワードを入手すると、基本的にサブスクリプション全体にアクセスできます。
可能であれば、Azure Resource Manager (ARM) API
の代わりに を使用してサブスクリプションを管理するオプションがあるかどうかを確認してくださいService Management API
。Role-based access control (RBAC)
ARM API を使用すると、単純にタイプ ユーザーを作成し、必要Service Principal
なアクセス許可のみを付与できます。サブスクリプションの共同管理者にする必要はありません。