株式会社ビッグツリーテクノロジー&コンサルティングは、2025年1月1日をもってキャップジェミニ株式会社に統合されます。
統合後のウェブサイトはこちらをご覧ください。
column

コラム

しばらく使われていないIAMユーザの情報をTeamsへ通知する

はじめに

こんにちは。BTC クラウドCoEの長濱です。

突然ですが、退職者やプロジェクトを離任された方のIAMユーザの情報がそのままになっていることはないでしょうか。

今回は上記のようなことを防ぐために、しばらく使用されていないIAMユーザの情報をMicrosoft Teams(以下、Teams)へ通知する方法をご紹介します。

構成

今回の実装ではAmazon Event Bridge(以下、Event Bridge)とAWS Lambda(以下、Lambda)を組み合わせたシンプルなものになります。

  • ランタイム:Python 3.9
  • Python:3.11.2  

実装の際にPythonライブラリのzip化が必要となるため、ローカルで使用しているPythonのバージョンを記載しております。

実装

①Lambdaの構築

Lambdaの作成

1.[関数の作成]をクリックします。

2.関数名、ランタイムを入力、選択します。

 詳細設定は設定を変更せず、[関数の作成]をクリックします。

 

Layerの追加

1.requestsライブラリをインストールします。

$ mkdir python
$ cd python
$ pip install requests

2.pythonフォルダをzip化します。

windowsの場合は、右クリック後、[送る]>[圧縮(zip形式)フォルダー]をクリックします。

3.AWSコンソール上から[レイヤー]をクリックします。

4.[レイヤーを作成]をクリックします。

5.名前を入力し、2.で作成したzipファイルのアップロード後、[作成]をクリックします。

 

 

7.作成したLambda関数の設定画面から[レイヤーの追加]をクリックします。

8.6.で作成したレイヤーを選択し、[追加]をクリックします。

受信Webhookの作成と環境変数への設定

こちらのドキュメントを基に受信Webhookを作成していきます。

1.Teamsのチャネル右側にある[…]をクリックします。

2.[コネクタ]をクリックします。 

3. Incoming Webhookを検索し、[追加]をクリックします。

4,[追加]をクリックします。

5. Webhookの名前を入力し、[作成]をクリックします。

6. 受信WebhookのURLが発行されるため、メモします。

 [完了]をクリックします。

7.作成したLambda関数の設定画面上から[環境変数]>[編集]をクリックします。

8.キーに「WEB_HOOK」、値に6.でメモした受信Webhookを入力し、[保存]をクリックします。

 

 

Lambdaのスクリプトを作成

スクリプトはこちらをご参照ください。

コードをコピペし、[Deploy]をクリックします。

Lambdaの実行ロールを編集

1.作成したLambdaの設定画面から[アクセス権限]>ロール名をクリックします。

2.[許可を追加]>[ポリシーをアタッチ]をクリックします。

 

3.[ポリシーを作成]をクリックします。

4.IAMを選択します。

5.以下の2つのアクションを選択し、[次のステップ:確認]をクリックします。

  • GenerateCredentialReport
  • GetCredentialReport

  

6.ポリシー名を入力し、[ポリシーの作成]をクリックします。

7.6.で作成したポリシーを選択し、[ポリシーをアタッチ]をクリックします。

タスクのタイムアウト値を変更

実行する際に既定のタイムアウト値では短すぎる場合があるため、タイムアウト値を変更します。

1.[一般設定] > [編集]をクリックします。

2.タイムアウト値を5分に変更し、[保存]をクリックします。

②EventBridgeの設定

1.関数の概要から[トリガーを追加]をクリックします。

2.EventBridgeを選択し、ルール名、スケジュール式を入力後[追加]をクリックします。

 今回は1週間に1回通知が来るように設定しました。

 

動作確認

作成したLambdaの[テスト]タブ上で[テスト]をクリックすると

テストが実施できます。

実行結果はこちらになります。

左にIAMユーザ名、右側にログインしていない期間を表示しています。

 

まとめ

今回はLambdaとEventBridgeを使用してしばらく使われていないIAMユーザの情報をTeamsへ通知する機能を実装しました。あまりIAMに関するAWS APIを触る機会が無かったので、勉強になりました。

RECOMMEND

おすすめ記事一覧