説明
ドメインポリシーですべての主体に広い操作権限を許可すると、他の制御で制限されない要求がElasticsearchのインデックスやデータにアクセスできる可能性があります。実際の権限は、ポリシーの効果・条件、ネットワーク経路、きめ細かなアクセス制御に依存します。
ワイルドカードの主体があっても、必ず匿名アクセスが可能になるわけではありません。内部ユーザーデータベースなど別の認証方式を使う構成もあるため、実際の認証モデルに合わせて権限を制限してください。
想定される影響
- 意図しない主体が、許可されたデータの参照・変更・削除を行う可能性があります。
- 過剰な権限が悪用されると、情報漏えいやサービス停止につながるおそれがあります。
対処方法
AccessPoliciesの許可主体、操作、リソースを必要な範囲に絞ってください。IAM主体の要求にはSigV4署名と対象ロールを使用する権限を構成してください。別の認証方式では、きめ細かなアクセス制御とロールマッピングを確認してください。ネットワーク経路、HTTPS、実際の許可・拒否も検証してください。
例
既存のAWS::Elasticsearch::Domain形式によるポリシーの抜粋です。アカウント、リージョン、ドメイン、ロールARNを実際の値に置き換え、エンジンとネットワーク設定は別途用意してください。
変更前
yaml
Resources:
ElasticsearchDomain:
Type: AWS::Elasticsearch::Domain
Properties:
DomainName: test
AccessPolicies:
Version: "2012-10-17"
Statement:
- Effect: Allow
Principal:
AWS: "*"
Action: es:*
Resource: arn:aws:es:us-east-1:123456789012:domain/test/*
すべてのAWS主体にes:*を許可するポリシーです。実際のアクセス可否は、他のポリシーや認証・ネットワーク制御にも依存します。
変更後
yaml
Resources:
ElasticsearchDomain:
Type: AWS::Elasticsearch::Domain
Properties:
DomainName: test
AccessPolicies:
Version: "2012-10-17"
Statement:
- Effect: Allow
Principal:
AWS: arn:aws:iam::123456789012:role/es-access-role
Action: es:*
Resource: arn:aws:es:us-east-1:123456789012:domain/test/*
許可主体を1つのロールに絞ります。es:*は依然として広いため、必要な操作だけを残し、他の許可ポリシーも確認してください。