Amazon VPC Latticeの通信元の制御の選択基準の具体例について
こんにちは、AWS事業本部の木村です。
以前の記事でIAM認証とセキュリティグループを利用して、接続元を制御する方法をご紹介しました。
IAM認証
セキュリティグループ
今回は具体的にどのようなケースでどちらを選択するのが望ましいのかいくつかケースを紹介していければと思います。 あくまで、望ましいという例なのでこの方式を採用しないといけないという点にはご注意ください。
IAM認証とセキュリティグループそもそもどこが違うの?
こちらも以前の記事のおさらいになりますが、簡単にまとめて説明します。
セキュリティグループはLatticeサービスネットワーク(以降サービスネットワークと呼称)に設定を行います。このためLatticeサービス(以降サービスと呼称)以降に対しての制御を行うことができません。
一方でIAMの認証では、サービスネットワークとサービスに対して設定可能であり、どのパスに対してアクセスの制限を行うかまで細かく制御を行うことができます。
このため柔軟な制御が必要な場合はIAM認証を選択することがおすすめです。
但し、Prinicipal等を指定したIAM認証を利用する場合はSigV4署名やIAMの設定をクライアント側に施さなければならずセキュリティグループより手間がかかるところが難点です。
SigV4署名やIAMの設定が必要な条件に関しては以下ドキュメントを参照ください。
この点を踏まえて、セキュリティグループの設定で問題ないケースとIAM認証を推奨するケースを構成図を交えてそれぞれご紹介できればと思います。
セキュリティグループの設定で問題ないケース
まずはセキュリティグループの設定で問題ないケースを紹介していきたいと思います。
但し将来的に拡張を行いIAM認証への移行が必要な場合、再度テストが必要になりますのでその点ご留意ください。
あらかじめIAM認証を推奨するケースのような形での拡張が想定されている場合には、以下に当てはまるケースでもIAM認証の設定も併せて検討してください。
サービスネットワークとサービスが1対1となるケース
初めて構築を行う場合、このケースが多いかと思います。
このようなケースでは、接続先に対する制御が不要なため設定が簡単に行えるセキュリティグループで制御をおすすめします。
サービスネットワークでVPC内で接続を行いたいリソースに対して、セキュリティグループで許可を設定することで以下のようなアクセス制御を実現できます。
サービスネットワークを共用するが、接続先のサービスが1つのケース
サービスネットワークを共用するというのは、以下のようなケースです。
VPC内のアクセスを許可するリソースを設定する、セキュリティグループはVPC毎に設定が可能です。
ですので、サービスネットワークにVPCが複数関連づいているが、接続先のサービスが一つの場合もセキュリティグループでの制御をおすすめします。
セキュリティグループの設定方法としては先ほどのサービスネットワークとサービスが1対1となるケースと同様の設定をそれぞれのVPCに設定することで接続するリソースを制限することができます。
サービスネットワークを共用するが、接続先のサービスが同一のケース
少し複雑になってきました。構成図では以下のようなケースです。
共通APIに接続するようなケースの想定になります。VPCや接続先のサービスが増えてもリソースから接続するサービスが同一の場合このケースと考えてください。
接続先を絞り込む必要がなければセキュリティグループでも対応ができますので、このような場合もセキュリティグループでの制御をおすすめします。
セキュリティグループの設定方法としては、先ほどの「サービスネットワークを共用するが、接続先のサービスが一つのケース」と同じ考え方で設定が可能です。
IAM認証を推奨するケース
続いてIAM認証での制御を推奨するケースを紹介していきたいと思います。
VPC内に存在するリソースがそれぞれ別のサービスにアクセスし、それぞれで制限を行いたいケース
以下のようなケースです。このような場合にはIAM認証を利用しましょう。
基本的にはサービスにてIAMの認証を行うのが良いかと思います。
具体的にはこのように設定を行います。
このような設定を行うことで、それぞれアクセスを行いたい経路だけにアクセスを許可することができます。
サービスネットワークを共用するかつ接続先のサービスが異なるケース
以下のケースのように複数VPCに対して関連付けかつ接続先のサービスが異なる場合はにはIAM認証の設定を推奨します。
またこのケースの場合には、以下のようにサービスネットワークを分割することでセキュリティグループの設定で問題ないケースもあります。
課金対象はサービスとなる為、どちらの構成としても料金には変わりはありません。今後の拡張予定と併せて適切な構成を検討してみてください。
共通サービスネットワークを作成する場合
以下のようにサービスネットワークを集約するようなケースの場合ではIAM認証を設定しないと無数の経路が作成されてしまうため、IAM認証の設定を強く推奨します。
この構成図の場合、3*3で9通りのアクセス経路が生まれます。
集中管理を行うようなケースでは紐づくVPCもサービスも数が大きくなるケースが多いかと思いますので、この場合にはルート制御としてIAMでの認証を行うべきかと考えています。
このケースでは集中管理者がサービスネットワークにIAMポリシーを設定して管理していくのが良いかと思います。
まとめ
以前にもIAM認証とセキュリティグループの比較をしていたのですが、パターンが一つでどちらを選択すべきか分かりにくかったかと思いますので具体的な例を出してまとめてみました。
サービスネットワークの使い方によってこの他のパターンもありそうですが、大体のパターンはカバーできているのではないかと思います。
この記事がLattice検討中のどなたかの参考になれば幸いです。
以上AWS事業部の木村でした。