ホスト・エージェントのセキュリティーに関する考慮事項
Instana エージェントは、インストールされた対象システムに対して広範なアクセス権限を持っています。 エージェントの実行時のセキュリティーに関する考慮事項については、以下の情報を参照してください。
TLS 暗号化されたエージェント・エンドポイント
エージェントは、 HTTP ポートおよび gRPC42699 ポートで、 4317TLS で暗号化されたリクエストを受け入れるように設定できます。 詳細については、 「エージェント・エンドポイントの TLS 暗号化の設定」 を参照してください。
非rootユーザーとして実行する
セキュリティを強化するため、 Instana エージェントを、権限が制限された非rootユーザーとして実行することができます。 このアプローチでは、エージェントによるシステムリソースへのアクセスを制限することでセキュリティ上の負荷を軽減しつつ、包括的な監視機能を提供します。
一時ファイル
実行時に、エージェントは一時ファイルを作成し、エージェントが実行されるホスト・マシン上の $TMP/.instana またはエージェントがモニターするアプリケーション・コンテナー内に追加のライブラリーを保管します。 これらのファイルは、実行時にモニター対象プロセスによってアクセスされます。 モニター対象アプリケーションはさまざまなユーザー権限で実行されるため、これらのファイルには幅広いアクセス権限があります。 Linuxベースのホストおよびコンテナー環境では、権限は 777です。 Windows ベースのホストでは、これらのファイルは にあり %TEMP%/instana、アプリケーションを実行するユーザーアカウントに対して完全なアクセス権限が設定されています。
一時ファイルの詳細
一時ファイルのほとんどは、 Java ベースのワークロードの監視およびトレースに使用されます。 Java ベースのワークロードのメトリクスとトレーシングに必要な基本ファイルは以下の通りです:
| ファイル名 | ファイル・サイズ | プロセス固有 |
|---|---|---|
| javaagent-loader- < version> .jar | 221KB | いいえ |
| instrumentation-boot- < version>-< pid>-< uid> .jar | 50KB | はい |
| instrumentation-shared- < version>-< pid>-< uid> .jar | 4.1MB | はい |
| sensor-java-javaagent-< version>-< pid>-< uid> .jar | 153KB | はい |
| sensor-java-trace-javaagent-< version>-< pid>-< uid> .jar | 3MB | はい |
注:
- ファイル・サイズは、それ以降のバージョンでは異なる場合があります。
javaagent-loader同じホスト上で実行される複数の Java プロセスに対しては、一度だけ指定すれば十分です。- コンテナ化された Java ワークロードの場合、ファイル一式全体が個々のコンテナにコピーされます。
- 実際のファイル数は、 Java ベースのワークロードの数と種類によって異なります。 特定の Java フレームワークおよびランタイムについては、 Instana を使用することで、 JVM による基本的な監視機能に加えて、より詳細な情報を得ることができます。 使用する Java 技術(例: SpringBoot,、 Wildfly、 WebSphere,、Tomcatなど)によっては、 追加の
sensor-<technology>-javaagent-...ファイルがコピーされます。
Kubernetes におけるホストエージェントのセキュリティ上の考慮事項
Instana のホストエージェントは、アプリケーションのポッドに接続し、展開先のノード上のブリッジネットワーク上で自身のポートを一覧表示または開く必要があるため、インフラストラクチャの相関分析を行うために、ホストネットワークへのアクセスとホストレベルでのプロセスIDの検索が必要となります。 これは Linux & Unix で付与される権限 ホスト環境と同等であり、DaemonSet デプロイメントで設定された以下のフラグが必要です。
privileged: true: オーバーレイなしで完全なアクセス/proc権を提供し、 JVM のマウントに対するUID/GIDを変更し、アプリケーションネームスペースにアクセスします。hostPID: true:. 内にホストレベルのPID/procを提供します。 この設定は、インフラストラクチャの相関分析に必要です。hostNetwork: true: ホストレベルおよびブリッジのネットワークインターフェースへのアクセスを提供します。
さらに、 OpenShift, にホストエージェントをインストールすると、前述の権限を付与 privileged するためにセキュリティコンテキスト制約(SCC)が設定されます。
Kubernetes にホストエージェントを展開する際は、以下のセキュリティ上の点に留意してください:
- このエージェントは、効率的な診断をサポートし、必要な運用機能を実現するために、ホストシステムのディレクトリをコンテナにマウントします。
- コンテナのルートファイルシステムは、基本的な操作をサポートし、機能を維持するために、ホストシステムへの書き込みアクセス権を必要とします。
- コンテナ
securityContextの設定で権限セットprivileged: trueが設定されている状態で実行中のコンテナには、seccompプロファイルを適用することはできません。 特権コンテナは常にとして実行されますUnconfined。 詳細については、 「seccomp を使用してコンテナのシステムコールを制限する」 を参照してください。
Kubernetes センサーが Kubernetes クラスター内で実行されているすべてのリソースとアプリケーションを検出できるようにするには、クラスターロールルールを次のように設定します
rules:
- nonResourceURLs:
- "/version"
- "/healthz"
verbs: ["get"]- apiGroups: ["batch"]
resources:
- "jobs"
- "cronjobs"
verbs: ["get", "list", "watch"]
- apiGroups: ["extensions"]
resources:
- "deployments"
- "replicasets"
- "ingresses"
verbs: ["get", "list", "watch"]
- apiGroups: ["apps"]
resources:
- "deployments"
- "replicasets"
- "daemonsets"
- "statefulsets"
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources:
- "namespaces"
- "events"
- "services"
- "endpoints"
- "nodes"
- "pods"
- "replicationcontrollers"
- "componentstatuses"
- "resourcequotas"
- "persistentvolumes"
- "persistentvolumeclaims"
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources:
- "endpoints"
verbs: ["create", "update", "patch"]
- apiGroups: ["networking.k8s.io"]
resources:
- "ingresses"
verbs: ["get", "list", "watch"]