Amazon EKSのAudit LogsはCloudWatch Logsを通じて利用可能です。k8saudit-eks Falcoプラグインを使用してください。
始める前に
-
Falcoは
k8saudit-eksとjsonプラグインで構築されています。 -
コントロールプレーンのログ記録が有効になっているEKSクラスター。
手順
- AWS Consoleでコントロールプレーンのログを有効にします。
- EKSクラスターに移動します。
- に移動します。
- [監査]ログを有効にする。
- AWS ConsoleでIAMの権限を設定します。
- に移動し、ノードグループ名をクリックします。
- [Node IAM role ARN] をクリックして IAM を開きます。
- 次のインラインポリシーを追加します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadAccessToCloudWatchLogs", "Effect": "Allow", "Action": [ "logs:Describe*", "logs:FilterLogEvents", "logs:Get*", "logs:List*" ], "Resource": [ "arn:aws:logs:${region}:${account-id}:log-group:/aws/eks/${cluster-name}/cluster:*" ] } ] }${region}、${account-id}、${cluster-name}をご自身の値に置き換えてください。 overrides.yamlを更新して、監査ログの収集を有効にします。visionOne: bootstrapToken: ... endpoint: ... exclusion: namespaces: [kube-system] ... auditLogCollection: enabled: true provider: eks eks: region: "${your cluster's region}" clusterName: "${your cluster's name in aws console}"
トラブルシューティング: NoCredentialProvidersエラー
Error: NoCredentialProviders: no valid providers in chainが表示された場合:原因: ホップ制限のため、コンテナがIMDSに到達できません。
解決策:
# Get instance ID INSTANCE_ID=$(aws ec2 describe-instances --region <region> \ --filters "Name=private-dns-name,Values=<node-name>" \ --query "Reservations[0].Instances[0].InstanceId" --output text) # Increase hop limit aws ec2 modify-instance-metadata-options --region <region> \ --instance-id $INSTANCE_ID \ --http-put-response-hop-limit 2 # Restart pod kubectl delete pod -n trendmicro-system <pod-name>
