その2この広告は、90日以上更新していないブログに表示しています。Professional)の研修の準備と、研修でバタバタしてBlog更新ができませんでした(言い訳)さて、今日は実際に証明書を使ってサービスプリンシパルを作成し、Azureに自動ログインしてみたいと思います。使った方法を試そうと思います。Manager用のPowershellモジュール(以下AzureRM)が必要になります。AzureRMのインストールは以下のリンクを参照してください。今回は証明書を新たに用意するのが面倒だったので、既存の証明書を使用するので、証明書の場所を確認します!*1Powershellを実行するコンピューターでMMCを起動し、証明書(コンピューター)を開きます。ここに幾つか証明書があるので、今回は、証明書の個人ストアにある一番下のクライアント証明書を使ってサービスプリンシパルを作ってみようと思います。*2証明書を使ってサービスプリンシパルを作成するまずPowershellを起動し、AzureRMモジュールを読み込みます。Azurerm読み込みが完了したら、以下のコマンドを実行し、AzureADにログインをします。**Login-AzureRmAccountローカルコンピューターの証明書ストアから、<<証明書のSubject名を入れる>>にマッチする証明書を抽出し変数に代入します。})取得した証明書情報のフォーマットを変換します。[System.Convert]::ToBase64String($cert.GetRawCertData())AzureADにサービスプリンシパルを作成する。-DisplayNameには任意の名称をつけます。この時、CertValueオプションとEnddate/Startdateオプションを使い証明書情報をAzureに送信します。$sp.ApplicationIdAzureポータルを確認すると、Powershell_Auto_logonというサービスプリンシパルが作成されていることが確認できました。Powershellを使って自動ログインを試す次にPowershellを使ってAzureVMの一覧を取得してみようと思います。サービスプリンシパルがきちんと作成できていれば、パスワードを聞かれることなくAzureVMの一覧が入手できるはずですが、そう簡単にはイカないようです。自動ログインしてコマンドを実行するには、証明書情報をAzureに教えて上げる必要があります。そのおまじないが以下の構文です。実行するとAzure上の仮想マシン一覧を取得できます。パスワードの入力画面はありませんでしたね。最後にいかがでしょうか。この方法を使うことで、Powershell内部にパスワードやアカウント情報を記載しなくて良いので、人の異動などにも影響されず、もしスクリプトが盗まれた場合でも、証明書も一緒に盗まれない限り、他の場所からのログインもできません。PowershellでAzureを管理したいと考えている皆さん、一度試してみてはいかがでしょうか。次回は何をするの?次回は、Office365に同様の方法でログインする方法を紹介したいと思います。(Office365の自動ログイン方法をググってみたら、証明書を使った方法が全くヒットしなかったため。殆どの記事はパスワードを埋め込む方式でした...)*1:本来はサービスプリンシパル用の証明書を内部CAから発行するほうがよいですが、今回はテストなので...*2:証明書(ユーザー)でも大丈夫ですが、Powershellの実行アカウントを気にする必要があるので、今回はコンピューターを使いました。Reserved.はてなブログをはじめよう!taitiooooさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。