スキップしてコンテンツを表示

IAMロールとアクセスキーのベストプラクティスの危険性について

0

たとえばEC2からS3を使用するとき、権限の付与についてのベストプラクティスは、アクセスキーを発行してそのアプリから使うというものではなく、そのS3にアクセスするためだけのIAMロールを作って、それをEC2インスタンスにアタッチするものだと思います。

アクセスキーはそれを知ってさえいれば、世界中どこからでも無制限に使用できてしまうので、AWS外からのアクセス以外では使用しないようにするのがベストプラクティスだ、という理屈はわかります。

ここで、ある1つのEC2インスタンスでWebアプリが動いているとします。このアプリはS3を使用しています。IAMロールをアタッチする方式の場合は、このインスタンス外からこのS3バケットにアクセスすることはできないので安全なように見えます。しかしながら、このインスタンス上で任意のコードを実行できれば、そのコードを実行するのがこのWebアプリとは全く無関係のUNIXユーザであったとしても、誰でもS3バケットにアクセスできてしまいます。

アクセスキーを使う方式であれば、そのキーがWebアプリのユーザとして保持されていて、権限が0600になっていれば、もしインタンス上の他のアプリやミドルウェアなどが乗っ取られたとしても、このWebアプリのユーザ(またはroot)の権限が乗っ取られない限りは、S3へのアクセス権限が奪取されることはありません。

もちろんアクセスキーの漏洩はないという前提ではありますが、ベストプラクティスを守ってIAMロールを使った方が、UNIXユーザによる権限の分離が全て無効になり、かえって危険性が上がってしまうように感じるのですが、これについては皆様はどうお考えでしょうか?

1回答
0
承認された回答

確かに仰る通り、IAMロールをEC2インスタンスにアタッチした場合、 全てのUNIXユーザがS3へアクセスできてしまいます。

今回のような場合、アクセスキーの保管、定期的なローテーションなどを考慮の上であれば IAMロールではなく、アクセスキーを発行して使用する方法でも問題ないと思います。 (権限設定なども記載のとおり)

もちろんアクセスキーの漏洩はないという前提ではありますが、ベストプラクティスを守ってIAMロールを使った方が、UNIXユーザによる権限の分離が全て無効になり、かえって危険性が上がってしまうように感じるのですが、これについては皆様はどうお考えでしょうか?

最終的に質問について、時と場合によるかと思います。 今回提示いただいたような場合はIAMロールを使用すべきではないが、UNIXユーザ毎ではなく全てのユーザへAWSリソースなどへの操作許可を与えたい場合などにはIAMロールを使用することは有用だと思います。

回答済み 1年前
  • ご回答ありがとうございます。やっぱり使い分けですよね。 SAAを取ったときに、アクセスキーじゃなくてIAMロールを使えと設問でしつこく出てくるものだから、そんなこと言われても、実際にはそっちの方が明らかに危険なケースもあるじゃないか…と一人でモヤモヤしてました。

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

関連するコンテンツ