AWS 公開可能リソース
このリポジトリの目的は、公開される可能性のあるすべてのAWSリソースのリストを維持することであり、最終的には信頼されていないアカウントと共有できるリソースも含めることです(そのセクションはまだ開発中であり、ここには含まれていません)。
このリストには以下の概念が適用されています:
- 別のリソースを通じて間接的に公開される可能性のあるリソースは含まれていません。例えば、CloudTrailログは公開されているS3バケットに送信できますが、誤って設定されているのはS3バケットであるため、CloudTrailは公開可能なリソースとしてリストされていません。
- 一部のリソースは、公開されていると見なされるために複数の要素が特定の方法で設定されている必要があります。例えば、KMSで暗号化されたSecrets Managerのシークレットは、シークレットにアクセスするためにシークレットとKMSキーの両方が公開されている必要があります。このリストの目的上、シークレットのリソースポリシーのみを考慮します。同様に、管理対象ElasticSearchクラスターの場合、パブリックアクセスを許可するリソースポリシーと、VPC以外のIPを持つことの両方が必要です。ここではリソースポリシーのみを考慮します。EC2の場合、パブリックIPを持つEC2を作成できますが、制限されたセキュリティグループを関連付け、後でパブリックアクセスを許可するように変更される可能性があります。私は、セキュリティグループの変更ではなく、パブリックIPを持つEC2の作成が注目すべきアクションであると考えています。
ロードマップ
このリポジトリには最終的に以下を含めたいと考えています:
- プライベートリソースとパブリックリソースの両方を作成するためのサンプルCLIコマンド
- これらの2つのイベントに関連するCloudTrailログ(監視ソリューションを構築してテストできるように)。例えば、StreamAlertのサンプルCloudTrailイベントはこちらで確認できます。
- リソースが公開されている場合の様子を示す、リソースに対する関連するDescribe呼び出し。例えば、CloudMapperのテストデータのサンプルJSONレスポンスはこちらで確認できます。
リソースポリシーを通じて公開可能なリソース
ECRリポジトリ
アクション:
Lambda
関数の呼び出しを許可
アクション:
Lambdaレイヤー
アクション:
Serverless Application Repository
アクション:
Backup
ドキュメント
アクション:
EFS
TODO: これが実際に他のアカウントと共有できるか確認が必要です。一部のドキュメントの文言から、アカウント内のプリンシパルにのみ共有可能である可能性があります。
アクション:
Glacier
アクション:
S3
S3バケットはポリシーとACLを介して公開可能です。S3オブジェクトはACLを介して公開可能です。ACLはバケットまたはオブジェクト作成時に設定できます。
アクション:
IAMロール
アクション:
KMSキー
アクション:
Secrets Manager
アクション:
CloudWatch Logs
アクション:
EventBridge
アカウントへのデータ送信のみ許可
アクション:
ドキュメント
アクション:
ElasticSearch
アクション:
Glue
アクション:
SNS
アクション:
SQS
アクション:
SES
ドキュメント
アクション:
共有APIを通じて公開可能なリソース
AMI
アクション:
FPGAイメージ
アクション:
EBSスナップショット
アクション:
RDSスナップショット
アクション:
RDS DBクラスタースナップショット
アクション:
ネットワークアクセスを通じて公開可能なリソース
API Gateway
関連するリソースポリシー(こちらを参照)があり、これにより複数のカテゴリに分類すべきものになる可能性があります。
アクション:
CloudFront
アクション:
Redshift
アクション:
RDS
アクション:
EC2
アクション:
Elastic IP
アクション:
ECS
アクション:
Global Accelerator
アクション:
ELB
アクション:
Lightsail
アクション:
Neptune
アクション:
ElasticCache
アクション:
EMR
アクション: