AWS リソースへのアクセス制御方法について教えてください
困っていること
弊社は、「検証」「開発」「本番」環境を分けるため、タグを利用した AWS リソースへのアクセス制御を検討しています。 他にも良い方法があれば教えてください。
どう対応すればいいの?
条件次第ではタグでの制御は可能であるものの、 ドキュメント 記載の通り、ABAC (タグに基づく承認) のみで EC2、S3、RDS といった全リソースに対しアクセス制御、管理することは叶いません。
※ 各サービスの ABAC 対応/非対応は表から確認することが可能です。
ABAC (タグに基づく承認) – タグに基づいてアクセスを管理するには、aws:ResourceTag/key-name、aws:RequestTag/key-name、または aws:TagKeys の条件キーを使用して、ポリシーの [condition element] (条件要素) でタグ情報を提供します。サービスがすべてのリソースタイプに対して 3 つの条件キーすべてをサポートする場合、そのサービスの値ははいです。サービスが一部のリソースタイプに対してのみ 3 つの条件キーすべてをサポートする場合、値は部分的です。タグなどの属性に基づくアクセス許可の定義の詳細については、「AWS の ABAC とは」を参照してください。ABAC をセットアップするステップを説明するチュートリアルについては、属性に基づくアクセスコントロール (ABAC) を使用するを参照してください。
代替案
AWS ではマルチアカウント環境での利用をベストプラクティスとしています。
セキュリティの向上、ヒューマンエラー回避のためにも、AWS アカウントを「検証」「開発」「本番」環境 などに分けることをご検討ください。
単一のアカウントで AWS ジャーニーを開始することもできますが、ワークロードの規模と複雑さの増大に伴って、AWS では複数のアカウントを設定することをお勧めします。マルチアカウント環境を使用することは AWS のベストプラクティスであり、いくつかの恩恵を受けることができます。 さまざまな要件に対応した迅速なイノベーション – AWS アカウントを社内のさまざまなチーム、プロジェクト、または製品に割り当てて、それぞれが独自のセキュリティ要件を考慮しながら迅速にイノベーションを推進できるようにすることができます。 (略) 柔軟なセキュリティコントロール – 複数の AWS アカウントを使用して、特定のセキュリティ要件を持つワークロードやアプリケーション、また HIPAA や PCI などのコンプライアンスに関する厳格なガイドラインの要件を満たす必要があるワークロードやアプリケーションを分離できます。
もし、アカウントを分けることができない等のご要件がある場合、VPC を分けて利用する方法も考えられますので、以下の弊社ブログを参考に再度ご検討してください。