AWSのセキュリティ機能の一つであるIAM Access Analyzerを使ってみました。
1.IAM Access Analyzer とは
AWSアカウント内のリソースにアタッチされているポリシーをチェックし、信頼ゾーンの外部からアクセスされる可能性の有無を教えてくれるサービスです。あくまでもポリシーを根拠に判断するだけであり、トラフィックを解析したり、アクセスログを解析したりといったことはありません。
また、すべてのリソースに対応しているというわけではなく、現在は下記5つに限られています。
- Amazon Simple Storage Service バケット
- AWS Identity and Access Management ロール
- AWS Key Management Service キー
- AWS Lambda の関数とレイヤー
- Amazon Simple Queue Service キュー
以下のようなイメージです。
詳細は公式ドキュメント(IAM Access Analyzer とは)をみていただければと思います。
2.Access Analyzerの有効化
Access Analyzerは、AWS Organizationsと連携して、マルチアカウント対応できるようなのですが、今回はシングルアカウント環境で試してみます。 シングルアカウントの場合は、そのAWSアカウントのみが信頼ゾーンにいると認識されます。
有効にしたいリージョンの IAM > Access Analyzer の画面で以下のように有効化します。
しばらくすると、結果のリストが表示されます。 あくまでポリシー設定しかみないということもあり、私の環境では数十秒〜数分程度で完了しました。
3.検出された結果を見てみる
今回はIAMロールとS3バケットで検出されました。
3-1.IAMロールの例
信頼ゾーン外のアカウントからロールを利用できるようになっています。
今回はSaaSのアカウント(DataDog、DeepSecurity、Cloud Automator)や、社内アカウントからスイッチロールできるようになっていました。 これらは意図的な設定だったので、問題ありません。 ここに見知らぬアカウントがあった場合等は、要注意です。
結果IDをクリックすると、結果の詳細画面に遷移できます。
意図的なものであり、検出不要なのでアーカイブに移動します。
アーカイブに移動できました
3-2.S3バケットの例
信頼ゾーン外の正規ユーザーからS3バケットを利用できるようになっています。 「次を介して共有」という列に「バケットACL」と記載がありました。
S3バケットの設定を確認すると、他のAWSアカウントのアクセスに正規IDの指定があります。
確認したところ、この正規ユーザーからのアクセスは不要とわかったので、バケットACLから設定を削除しました。
これでセキュアになったはずなので、Access Analyzerで再度チェックします。 ただ、公式ドキュメント(結果の解決)によると、30分以内にステータスが「解決済み」になり、その90分後に「削除」されるとのことなので、今回は待ってみます。
ポリシーが変更されてから Access Analyzer がリソースを再度分析して結果を更新するまでに、最大で 30 分かかる場合があります。解決済みの結果は、結果のステータスに対する最終更新から 90 分後に削除されます。
20分程度経つと、アクティブからは消え、解決済みに移動していました。
さらに90分後に削除されるのかなと思ったのですが、解決済みのままでした。 少し書いてあることと違うような気もするのですが、問題ないでしょう。
で、料金は?
IAM Access Analyzerは無料でした。
渡辺 信秀(記事一覧)
2017年入社 / 地味な内容を丁寧に書きたい