

# エージェントがメトリクスを配信するためのアクセス許可を設定する
<a name="CloudWatch-NetworkFlowMonitor-agents-kubernetes-permissions"></a>

Network Flow Monitor のエージェントをインストールしたら、エージェントが Network Flow Monitor の取り込み API にネットワークメトリクスを送信できるようにする必要があります。Network Flow Monitor のエージェントは、インスタンスごとに収集したネットワークフローメトリクスを配信できるように、Network Flow Monitor の取り込み API にアクセスするための許可を持っている必要があります。このアクセス許可は、サービスアカウント (IRSA) の IAM ロールを実装することによって付与されます。

エージェントがネットワークメトリクスを Network Flow Monitor に配信できるようにするには、このセクションのステップに従います。

1. **サービスアカウントの IAM ロールを実行**

   サービスアカウントの IAM ロールには、Amazon EC2 インスタンスプロファイルから Amazon EC2 インスタンスに認証情報を提供する場合と同じような方法で、アプリケーションの認証情報を管理する機能があります。IRSA の実装は、Network Flow Monitor エージェントが Network Flow Monitor 取り込み API に正常にアクセスするために必要なすべてのアクセス許可を付与するために推奨される方法です。詳細については、「Amazon EKS ユーザーガイド」の「[サービスアカウントの IAM ロール](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html)」を参照してください。

   Network Flow Monitor エージェントに IRSA を設定するときは、次の情報を使用します。
   + **[ServiceAccount:]** IAM ロールの信頼ポリシーを定義するときに、`ServiceAccount` に `aws-network-flow-monitor-agent-service-account` を指定します。
   + **[名前空間:]** `namespace` には、`amazon-network-flow-monitor` を指定します。
   + **[一時的な認証情報のデプロイ:]** Network Flow Monitor エージェントポッドをデプロイした後にアクセス許可を設定する場合、IAM ロールで `ServiceAccount` を更新すると、Kubernetes は IAM ロールの認証情報をデプロイしません。Network Flow Monitor エージェントが、指定した IAM ロールの認証情報を確実に取得するには、`DaemonSet` の再起動をロールアウトする必要があります。例えば、以下のようなコマンドを使用します。

     `kubectl rollout restart daemonset -n amazon-network-flow-monitor aws-network-flow-monitor-agent`

1. **Network Flow Monitor エージェントが Network Flow Monitor 取り込み API に正常にアクセスしていることを確認する**

   Network Flow Monitor エージェントポッドの HTTP 200 ログを使用して、エージェントの設定が正しく動作していることを確認できます。まず、Network Flow Monitor エージェントポッドを検索してから、ログファイルを検索して、成功した HTTP 200 リクエストを見つけます。例えば、次のオペレーションを実行できます。

   1. Network Flow Monitor エージェントのポッド名を見つけます。例えば、次のコマンドを使用できます。

      ```
      RANDOM_AGENT_POD_NAME=$(kubectl get pods -o wide -A | grep amazon-network-flow-monitor | grep Running | head -n 1 | tr -s ' ' | cut -d " " -f 2)
      ```

   1. 指定したポッド名の HTTP ログをすべてグレップします。NAMESPACE を変更した場合は、新しいものを使用してください。

      ```
      NAMESPACE=amazon-network-flow-monitor
      kubectl logs $RANDOM_AGENT_POD_NAME -\-namespace ${NAMESPACE} | grep HTTP
      ```

   アクセスが正常に許可されると、次のようなログエントリが表示されます。

   ```
   ...
   {"level":"INFO","message":"HTTP request complete","status":200,"target":"amzn_nefmon::reports::publisher_endpoint","timestamp":1737027525679}
   {"level":"INFO","message":"HTTP request complete","status":200,"target":"amzn_nefmon::reports::publisher_endpoint","timestamp":1737027552827}
   ```

   Network Flow Monitor エージェントは、Network Flow Monitor 取り込み API を呼び出して、30 秒ごとにネットワークフローレポートを発行することに注意してください。