はじめに
こんにちは、技術三課の三木宏昭です。
今年はラニーニャ現象が継続しそう、と聞いていたので厳しい寒さになると覚悟はしてましたが、
やはりとても寒い12月ですね。
埼玉県は年末年始に氷点下となりそうで、初日の出を見ようとすると寒さ対策は必須になりそうです。
とはいえ、家の中は暖房のおかげで快適に過ごせています。暖房があってよかった。
今日は暖房の効いた部屋から、re:Invent中に発表されたChange Managerについて書きます。
re:Inventとは
re:InventとはAWSの年次イベントです。
様々な新機能・新サービスの紹介や各種サービスの活用方法、顧客事例の紹介などが行われます。
今年はオンライン開催という事で視聴者上限もなく、気軽に参加することが出来ます。
12月の開催期間は終わりましたが、1月にも開催予定です!
参加はこちらから!
多くのセッションが英語ではありますが、私の見たセッションはどれも資料が分かりやすく、勉強になるものばかりでした。
「面白そうだな」「勉強になりそうだな」「使えそうだな」と感じましたら、ぜひ参加してみてください!
(英語のセッションが多くはありますが、資料は分かりやすく作られてますので、気後れせずに一度参加してみる事を強くお勧めします。)
変更マネージャを使ってみた
Change Managerの概要については弊社ブログの下記記事にまとまっておりますので、まずはご参照ください。
なお、このブログでは日本語のマネジメントコンソール表記に準じて、「変更マネージャ」という名称で記載します。
今回のテーマ
今回のテーマは「指定したIAMユーザーを、特定のIAMグループに追加する」作業をワークフローにしてみます。 イメージとしては以下の通りです。
やりたいこと
- 管理者権限が付与されたIAMグループ(Operationグループ)に、IAMユーザーを追加する
準備
変更Managerを使うために、まずはいくつか準備をします。
準備で必要なのは以下2ステップです。
- IAMロールの設定
- 変更マネージャの設定(初期設定)
1. IAMロールの設定
後述するドキュメントを実行するためのIAMロールを作成します
IAMを開き、左ペインの「ロール」を選択し、画面左上の「ロールの作成」を押下
信頼されたエンティティはSystems Managerを選択
ポリシーは「AmazonSSMAutomationRole」と「IAMFullAccess」を選択します
適当な名前を付けて、ロールを作成します
後で利用するので、ロールのARNはどこかに控えておいてください
2. 変更マネージャの設定
Systems Managerの左ペインから「変更マネージャ」を選び、セットアップを押下します
その後、「設定」タブを選んで、編集ボタンを押下
ユーザID管理の選択で、左側の「AWS identity and Access Management (IAM)」を押下
「テンプレートレビューワーの通知」の設定で、「SNSトピックを作成」を選択し、名前を入力して「通知を追加」を押下します
最後に右下の「保存」を押下します
以上で、使用する為の準備は完了です
作成
このステップで、変更マネージャで実行するドキュメントと、変更マネージャテンプレートを構築します。
3. ドキュメントの作成
ここから、Systems Manager上の操作になります。
Systems Managerの左ペインから「ドキュメント」を選択し、右上の「オートメーションを作成する」を押下。
名前とドキュメントの説明を入力します。
「ロールを想定」に、先ほど控えておいたロールのARNをはりつけます。
「入力パラメータ - オプション」を開いて、パラメータ名に「UserName」を設定します。
このパラメータを入れる事で、ユーザが申請する際に自分のユーザ名を設定できるようになります。
入力のServiceは「iam」、APIは「AddUserToGroup」を設定します。
このAPIに関するドキュメントはこちらです。
APIの引数である「UserName」と「GroupName」を設定します。
UserNameは2つ上で設定したUserNameを利用したいため、 {{UserName}} と設定。
GroupNameは、追加対象グループ名である「operation」を直接記載します。
ここまで出来たら、右下の「オペレーションを作成する」を押下して、完了します。
4.テンプレートの編集
Systems Managerの変更マネージャの画面で、「テンプレート」タブを選択し、「AWS-HelloWorldChangeTemplate」を押下します。
右上の「アクション」から「テンプレートを複製」を選択。
名前と説明を入力します。
テンプレートタイプは「標準変更テンプレート」、ランブックは「1つのランブックを選択」、ランブックには先ほど作成したランブック「AddIAMUserToOperationGroup」を設定。
テンプレート情報はお好みで入力。
承認者を追加するため、「承認者を追加」ボタンを押下し、「テンプレートに指定された承認者」を選びます。
適切な承認者を選択します(今回はadministratorを選びます)。
承認者はAdministratorのみで良いので、デフォルト入力値は削除しておきます。
SNSトピックは前の手順で作成したものを選択し、「通知を追加」を押します。
そのほかの項目は変更せずに、右下の「保存してプレビュー」を押下します。
以上で、テンプレートの作成は完了です!
動作検証
実施前の確認
現在、operationグループには誰も所属していない状態です。
myuserで実行!
myuserでAWSにログインします。
その後、変更マネージャの「テンプレート」画面で対象のテンプレート(AddIAMUserToOperationGroupTemplate)を選択し、右上の「リクエストを作成」を押下。
変更申請の名前とリクエスト情報を入力します(リクエスト情報は、1つ前で設定した「テンプレート情報」が反映されています)。
他の項目は変えず、右下の「次へ」を押下。
ランブックのパラメータでユーザ名を設定し、「次へ」を押下。
次の画面で内容を確認して、右下の「承認のために送信」を押下。
申請が送信された画面が表示されたら申請完了!
申請を承認
今度はAdministratorでログインして、変更マネージャの「リクエスト」を開くと、先ほど申請したものが表示されるので、選択します。
すると、申請内容が表示されるので、内容を確認して右上の「承認」を押下します。
コメント入力画面に、承認コメントを記載します。
少し待つと、ステータスが「スケジュール済み」に代わります。
数分後、ステータスが成功に代わりました。
結果確認
operationグループに、myuserが追加されました!
おわりに
いかがだったでしょうか。
ドキュメント(オートメーション)はAWS APIだけでなく、LambdaやStep Functionsを呼び出すこともできます。
気になった方は、ぜひ試してみてください。
三木 宏昭 (執筆記事の一覧)
クラウドインテグレーション部 技術1課
紅茶と親子丼とAWSが好き
2021年の目標:毎日リングフィットアドベンチャーのコントローラーを持つ
2021 APN ALL AWS Certifications Engineers