森永大志(130)25この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。Config芸人の森永です。Rules」AWSリソースの設定がルールに則っているかチェックするというサービスですが、少し困ったことがありました。ルールには大きく2種類、AWSが作成・管理している「マネージドルール」と自分で作成する「カスタムルール」というものがあるのですが、「カスタムルール」は自分でLambdaを使って作成する必要がありました。シェルスクリプトしか日常的に書かない私にはちょっと気が重かったりします。(そこはちゃんとやれよ、というツッコミごもっともです。Rulesのルールを共有する場としてGitHubのリポジトリが公式に公開されました!マネージド、カスタムの中間ぐらいの位置づけの、「人の作ったよさ気なルール」が選択肢として加わったということです。GitHubなので、自分で作った素晴らしいルールを世界のみんなに公開することも可能です。現在、公開されているルールは以下の通りです。Configが有効化されているか全てのEC2インスタンスが指定されたインスタンスタイプになっているか特定のリソースタイプ(EC2など)が指定された数を超えていないか個人的には、ローテートを忘れやすい11番や全ユーザ管理が難しい14番なんかが非常に使い勝手がいいルールだなと思います。今上げたルールはあくまでも現状あるルールなので、今後どんどん追加されていくでしょう!試してみる個人的に使ってみたい11番のルールで試してみます。やり方はカスタムルールの設定方法と同様です。Rulesが使用できるのはバージニアリージョンだけなので、そちらで検証します。rule」を選択します。rule」を選択します。名前、説明をいい感じに決めます。functionを作成していきます。blueprint選択画面がありますが、毎度のごとくここはSkipします。functionの名前、説明を入力します。面倒なのでルールと同じものを使用しました。言語については、カスタムルールによって違いますので適したものを選びましょう。(今のところNode.jsが9割、Python1割くらいです。)GitHubで目的のカスタムルールのコードをコピーします。ファイルをS3にアップロードして、、、というのでもいいのですが、1ファイルで完結しているのでコピペのほうが早いです。Ctrl+cでコピーすれば完璧です。GitHubでコピーしてきたコードをLambdaの画面にペーストします。次に、Handlerの設定をします。初期値はindex.handlerになっていると思いますが、コードの中のhoge.handlerを見つけ出し、その値を設定して下さい。今回はexports.handlerとなっていました。Roleの設定でLambdaに権限を与えてあげるのですが、ちょっとここが面倒です。ルールに応じて必要な権限を設定して上げる必要があります。aws.IAM();とあることから、configとiamの権限を使用することが分かります。configとiamで検索してみると、config.putEvaluationsとiam.listAccessKeysを使用していました。これをポリシーに記載する際には、config:putEvaluationsとiam:listAccessKeysとなります(ピリオドではなく、コロン)のでご注意下さい。Roleを作成します。「ポリシードキュメントを表示」を押すとどのようなポリシーを設定するかを確認できます。この中にiam.listAccessKeysがないので、追加して上げる必要があります。「編集」を押して、ポリシーを編集できるようにします。元あったポリシーは残しつつ、以下のように設定します。]}iam.listAccessKeysの部分はお使いのルールに応じて変更して下さい。(必要なポリシーもルールと一緒に記載されていると親切ですね。自分が作るときは心がけます。)ポリシーの設定が終わったら「許可」して、Lambdaの設定画面に戻ります。settingsですが、特にこだわりがなければこのままでいいです。「Next」を押しちゃいましょう。function」を押します。functionの作成は成功です。Rulesの設定画面に戻ります。functionのARNを貼り付けたらLambdaの設定は完了です。次に、Triggerの設定に移ります。「AWSリソースが変更された際に検査」をするか、「定期的に検査」をするかを選択できます。公開されているルールのファイル名末尾がtriggeredとなっているものは「変更時に検査」で、periodicとなっているものは「定期的に検査」です。今回はiam_access_key_rotation-triggered.jsというファイル名なので、IAMユーザが「変更時に検査」と設定します。次はパラメータの設定です。ルールによってはパラメータが必要な物があります。こちらのページに必要なパラメータは記載されています。今回はMaximumAccessKeyAgeというアクセスキーの有効期限のパラメータを設定します。(が、上の一覧と実際のコードの中とパラメータ値が違う可能性がありますので、うまく行かなかったらコードを眺めてみてください。上の一覧にはMaximumAPIKeyAgeと書いてあったのでハマりました。「Save」を押してルールを作成しましょう。ルール作成をすると「Evaluating...」という検査中の状態になります。待つとあらら、、、90日以上アクセスキーをローテートしていないアクセスキーがあるようです。キーをローテートして、暫く待つと再度検査をしてComliantになりました!ちなみに、キーをローテートする際に、昔のキーを削除せずにInactiveにするという事をすることが多いかと思いますが、現状はInactiveでも古いアクセスキーだとNGなようです。(後でInactiveは検査しないようなプルリク送っておきます。)ルールを公開するとき併せて記載した方がいい情報ルールを公開するときに記載されているといいなという情報をまとめました。こちらのページに追記する形が宜しいかと思います。追加で必要なものだけ書いてあれば非常に助かりますhandlerの名前コードを読む手間が省けるのであれば嬉しいですAWSリソースの変更時検査か定期検査かファイル末尾にtriggeredかperiodic変更時検査の場合、何のAWSリソースが変更された時かこれもファイル名に記載してもいいと思いますルールに指定するパラメータ変更した際には一覧も更新して下さい。最後に使えるルールが簡単に使えるだけでなく、自分でルールを作る際のお手本としても非常に使えるリポジトリになっています。これらを活用して、運用いらずの運用を目指しましょう!Configと名のつくニュースは私のためにとってくれているのか誰もブログを書こうとしません。1,304,826酒と旨いものを求めて三千里。いろんな技術をつまみ食いするのが好きです。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。CAFEの他、NTTデータとセブンイレブンの取り組みや、サインポスト、Zippinなどの各社と流通・小売業との連携を業界マップに作成してみました。PolicyのConditionにaws:CalledViaというキーが追加されました。いったキーなのかご説明します。和樹31こんにちは植木和樹@上越オフィスです。Terminalの機能確定版がリリースされたので試してみました。夏目祐樹403こんにちは、CX事業本部の夏目です。MacのタッチバーのタッチIDが非常に便利なのですが、Terminalでsudoを叩かないと行けないときに使えたらなぁと思ったので、情報を共有します。臼田佳祐295ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。洋介256SnowflakeがAWSの東京リージョン上で稼働するようになりました。データを日本に置けます。芳賀健233こんにちは!猫様の忠実なるしもべ、芳賀健です。Tokyoで開催されました。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。