AWS Systems Manager Run CommandでWindowsOSにユーザーを作成しよう

記事タイトルとURLをコピーする

こんにちは、SRE2課の松井(紀)です。
最近オライリー・ジャパンのSREを読んでいまして、重要なタスクに注力するためにトイルを撲滅せよ、という記述を読みました。

「トイルとは、手作業、繰り返される、自動化が可能、戦術的、長期的な価値がない、サービスの成長に比例して増加する、といった特徴を持つ作業です。」
トイルの洗い出し、測定、削減によって運用コストを削減でき、困難ながらも興味深いプロジェクトに専念する時間を確保できます。 https://cloud.google.com/blog/ja/products/gcp/identifying-and-tracking-toil-using-sre-principles

自分の業務の中で改善できるトイルがあったので、簡単な内容ですがブログ化しました。

はじめに

Windows OSにさくっとユーザーを作りたいこと、よくありますよね。これがお客様環境の場合、ユーザー作成依頼をしたり、仮パスワードを発行してもらい別途変更をかけるなどなど手間がかかります。

今回は、AWS Systems Manager Run Command(以下Run command)を用いてWindowsOSにユーザーを作成する方法を紹介します。
こちらを利用することで、Run command実行可能な環境であればOSにログインすることなく新規のユーザー作成が出来るようになり余計なやり取りを省略することが出来ます。

環境

  • マネージドインスタンスであること
    AWS Systems Managerの接続方法や概要は以下ブログを参照してください。

blog.serverworks.co.jp

blog.serverworks.co.jp

  • Microsoft Windows Server 2019 Base - ami-0c068f008ea2bdaa1

やりたいこと

  • ユーザー(test01,02)を作成する
  • Administratorグループに所属させる
  • パスワードを無期限に設定する
  • 設定したパスワードはコマンド履歴で残らないようにする

作業手順

AWS Systems Manager Parameter Storeにパスフレーズを保存

Run commandに直接パスフレーズを打ち込むとコマンド履歴にパスワードが残ってしまい、本来知らせたくないユーザーにパスワードが知られることとなります。
今回はSystems Manager Parameter Store(以下Parameter Store)にパスワードを格納し、そちらを参照させる方法でRun commandを実行します。

[パラメータストア]-[パラメータの作成]を選択します f:id:swx-toshiki-matsui:20220225104616p:plain

任意の名前を設定し、[値]欄にパスフレーズを入力します。

f:id:swx-toshiki-matsui:20220225134848p:plain なお、Run CommandでSecure Stringの参照がサポートされていないのでKMSによる暗号化は対応しておりません。

test02についても同様に作成します。

Run commandを実行

[Run command]-[コマンドを実行]を選択し、コマンドドキュメントで[AWS-RunPowerShellScript]を選択します。 f:id:swx-toshiki-matsui:20220225113549p:plain

コマンドのパラメータに以下コマンドを入力します

## Get passwords from Systems Manager Parameter Store
$password01 = "{{ssm:test01}}"
$password02 = "{{ssm:test02}}"

## create test01
Start-Process -FilePath "net" -ArgumentList "user test01 $password01 /add /logonpasswordchg:no" -Verb runAs
Start-Process -FilePath "net" -ArgumentList "localgroup administrators test01 /add" -Verb runAs
wmic useraccount where "Name='test01'" set PasswordExpires=FALSE

## create test02
Start-Process -FilePath "net" -ArgumentList "user test02 $password02 /add /logonpasswordchg:no" -Verb runAs
Start-Process -FilePath "net" -ArgumentList "localgroup administrators test02 /add" -Verb runAs
wmic useraccount where "Name='test02'" set PasswordExpires=FALSE

{{ssm:parameter-name}}と指定することで、さきほど設定したパスフレーズをWindowsOS上で参照することが出来ます。
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-parameter-store.html

対象となるインスタンスを選択します f:id:swx-toshiki-matsui:20220225113818p:plain

今回はロギングやSNS通知は設定していません。

実行をクリックすると、設定したコマンドが実行されます
コマンドのステータスが成功となれば作業は終了です。エラーとなる場合はエラー内容など確認してください。 f:id:swx-toshiki-matsui:20220225113952p:plain

結果確認

WindowsOS上で2ユーザー作成出来たことを確認出来ました。 f:id:swx-toshiki-matsui:20220225135455p:plain Administratorグループへの所属、パスワード無期限の設定も出来ていますね。 f:id:swx-toshiki-matsui:20220225135524p:plain f:id:swx-toshiki-matsui:20220225135615p:plain

コマンド履歴を確認すると、設定したパスワードが平文で残っておらず変数に格納されて処理されています。 f:id:swx-toshiki-matsui:20220225135706p:plain

Parameter Storeの削除

さきほど入力したパスフレーズは忘れずに削除してください。これでAWS上にパスワード情報は残りません。

さいごに

f:id:swx-toshiki-matsui:20220225115718p:plain 今回は、Run commandでWindowsOSにユーザーを作成する方法を紹介しました。
誰かのお役に建てれば幸いです。

またお会いしましょう。

松井 紀樹(記事一覧)

CI部SRE2課

オンプレサーバーの修理屋からAWSのインフラ構築へジョブチェンジ

AWS資格6冠

筋トレとサウナが趣味。大胸筋が歩いてる