
当社には大規模な AWS アカウントがいくつかあり、リソースを監視するためのガイドラインを実装し、既存および将来のすべてのリソースに対して監視が確実に設定されるよう管理することが私の任務です。
リソース オプションやカスタム条件に基づいてルールを呼び出すことで、リソースの作成/変更を防ぐ方法はありますか? たとえば、拡張モニタリングが有効になっていない限り RDS インスタンスの作成を許可しない、または特定の CloudWatch アラームなしで EC2 インスタンスの作成を許可しないなどです。
ポリシー/ガードレールを調べてみましたが、十分に堅牢ではないようです。このシナリオでは他の人は何を使用していますか?
編集AWS Config を潜在的な解決策として検討してきましたが、多くの制限があるようです。たとえば、RDS クラスターを監査して、特定のメトリックに対してアラームが作成されているかどうかを確認する機能はありますが、RDS インスタンスに対して同じことはできません。
答え1
SCP によるリソース作成の防止
場合によっては、このタイプの要件にサービス コントロール ポリシーを使用できますが、これは作成されるリソースのプロパティにのみ関連します。私の知る限り、「CloudWatch アラームが作成されていない場合は EC2 インスタンスを作成できません」と言うことはできません。
AWSにはサービスコントロールポリシーの例がいくつかあります。このページ、以下に 1 つコピーします。この手法を使用して、暗号化されていない場合は EC2 インスタンスの作成を防止したり、EBS ボリュームが暗号化されていない場合は RDS の作成を防止したりしました。また、ストレージが暗号化されていない場合は RDS の作成を防止したりしました。
Amazon からの SCP の例: この SCP では、t2.micro インスタンス タイプを使用しないインスタンスの起動はすべて拒否されます。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RequireMicroInstanceType",
"Effect": "Deny",
"Action": "ec2:RunInstances",
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"StringNotEquals":{
"ec2:InstanceType":"t2.micro"
}
}
}
]
}
自動修復
リソースが作成された後に自動修復を検討することもできます。AWS Config のようなものは、リソースが作成されるたびに通知を受け取り、Lambda スクリプトを実行します。その後、カスタム コードを実行して状態を検出し、関連リソースを設定できます。これもカスタムですが、過去に実行したことがあります。たとえば、S3 バケットが作成されると、特定のタグが設定されていない限り、ログ記録とバージョン管理が有効になります。
同様に、自動的に修復するのではなく、準拠していないリソースを削除することもできます。
IAM 権限によるリソース作成の防止
準拠していないリソースを削除する代わりに、ユーザーが直接リソースを作成できないようにユーザーの権限を減らし、必要な関連リソースをすべてセットアップして、ユーザーに代わってリソースをセットアップするセルフサービス システムのようなものを導入することを検討できます。私は自分でこれをやったことがないので、正確な方法はわかりません。
これは、提供した CloudFormation テンプレートをサービスロールで実行できるようにしながら、ユーザーにリソースを直接作成する権限を与えないという単純なものです。