ホスト・エージェントのセキュリティーに関する考慮事項

Instana エージェントは、インストールされた対象システムに対して広範なアクセス権限を持っています。 エージェントの実行時のセキュリティーに関する考慮事項については、以下の情報を参照してください。

非rootユーザーとして実行する

セキュリティを強化するため、 Instana エージェントを、権限が制限された非rootユーザーとして実行することができます。 このアプローチでは、エージェントによるシステムリソースへのアクセスを制限することでセキュリティ上の負荷を軽減しつつ、包括的な監視機能を提供します。

注: 非rootエージェントはパブリックプレビュー機能として提供されており、systemdのサポート、自動サービス管理、および利用可能なすべてのセンサーが完全にサポートされています。 インストール、設定、セキュリティ上の注意事項、およびサポートされている機能の詳細については、 「非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"]