Sidecar HelmチャートのWallarm固有の値¶
本書はWallarm Sidecarのデプロイまたはアップグレード時に変更可能なWallarm固有のHelmチャートの値について説明します。Wallarm固有およびその他のチャート値は、Sidecar Helmチャートのグローバル設定用です。
グローバル設定とPodごとの設定の優先順位
PodごとのannotationsはHelmチャートの値よりも優先されます。
変更が必要なデフォルトのvalues.yaml
内のWallarm固有の部分は、以下のようになっています:
config:
wallarm:
api:
token: ""
host: api.wallarm.com
port: 443
useSSL: true
caVerify: true
nodeGroup: "defaultSidecarGroup"
existingSecret:
enabled: false
secretKey: token
secretName: wallarm-api-token
apiFirewall:
mode: "on"
readBufferSize: 8192
writeBufferSize: 8192
maxRequestBodySize: 4194304
disableKeepalive: false
maxConnectionsPerIp: 0
maxRequestsPerConnection: 0
fallback: "on"
mode: monitoring
modeAllowOverride: "on"
enableLibDetection: "on"
parseResponse: "on"
aclExportEnable: "on"
parseWebsocket: "off"
unpackResponse: "on"
...
nginx:
workerProcesses: auto
workerConnections: 4096
logs:
extended: false
format: text
postanalytics:
external:
enabled: false
host: ""
port: 3313
...
# カスタムadmission webhook証明書提供用のオプション部分
# controller:
# admissionWebhook:
# certManager:
# enabled: false
# secret:
# enabled: false
# ca: <base64-encoded-CA-certificate>
# crt: <base64-encoded-certificate>
# key: <base64-encoded-private-key>
config.wallarm.api.token¶
フィルタリングノードのトークン値です。Wallarm APIにアクセスするために必須です。
トークンは以下の種類の1つを使用できます:
-
API token (recommended) - UIの整理のために、動的にノードグループを追加・削除する必要がある場合や、セキュリティ向上のためにトークンのライフサイクルを管理したい場合に最適です。APIトークンを生成するには:
APIトークンを生成するには:
-
Node token - 既に使用するノードグループが決まっている場合に適しています。
Nodeトークンを生成するには:
config.wallarm.api.existingSecret.enabled: true
の場合、このパラメータは無視されます。
config.wallarm.api.host¶
Wallarm APIエンドポイントです。以下のいずれかになります:
config.wallarm.api.nodeGroup¶
新たにデプロイされるノードを追加するフィルタリングノードのグループ名を指定します。この形式でのノードグループ化は、Deployロールを持つAPIトークン(config.wallarm.api.token
で渡される値)を使用してCloudにノードを作成・接続する場合にのみ利用可能です。
デフォルト値: defaultSidecarGroup
Podのannotation: sidecar.wallarm.io/wallarm-node-group
.
config.wallarm.api.existingSecret¶
Helm chartバージョン4.4.4以降、KubernetesのシークレットからWallarmノードトークンを取得するためにこの構成ブロックを使用できます。別々のシークレット管理を行っている環境(例: external secrets operatorを使用)に有用です。
WallarmノードトークンをK8sシークレットに格納し、Helmチャートに取り込むには:
-
Wallarmノードトークンを含むKubernetesシークレットを作成します:
kubectl -n wallarm-sidecar create secret generic wallarm-api-token --from-literal=token=<WALLARM_NODE_TOKEN>
- デプロイ手順に変更を加えずに実施した場合、
wallarm-sidecar
はWallarm SidecarコントローラーのHelmリリース用に作成されたKubernetesネームスペースです。別のネームスペースを使用する場合は、名前を適宜置き換えてください。 wallarm-api-token
はKubernetesシークレット名です。<WALLARM_NODE_TOKEN>
はWallarm Console UIからコピーしたWallarmノードトークン値です。
外部のシークレットオペレーターを使用する場合は、該当のドキュメントに従ってシークレットを作成してください。
- デプロイ手順に変更を加えずに実施した場合、
-
values.yaml
に以下の構成を設定します:
デフォルト値: existingSecret.enabled: false
(HelmチャートはWallarmノードトークンをconfig.wallarm.api.token
から取得します)。
config.wallarm.apiFirewall¶
リリース4.10以降で利用可能なAPI Specification Enforcementの設定を制御します。デフォルトでは有効になっており、以下の通りに設定されています。この機能を使用している場合、これらの値は変更せずにおくことを推奨します。
config:
wallarm:
apiFirewall:
mode: "on"
readBufferSize: 8192
writeBufferSize: 8192
maxRequestBodySize: 4194304
disableKeepalive: false
maxConnectionsPerIp: 0
maxRequestsPerConnection: 0
node 5.3.0以降、以下の説明が付いています(上記の例のデフォルト値を参照):
設定項目 | 説明 |
---|---|
readBufferSize | リクエスト読み取り用の接続ごとのバッファサイズです。ヘッダーの最大サイズも制限されます。クライアントが数KB以上のRequestURIや数KB以上のヘッダー(例: 大きなCookie)を送信する場合は、このバッファを増加してください。 |
writeBufferSize | レスポンス書き込み用の接続ごとのバッファサイズです。 |
maxRequestBodySize | リクエストボディの最大サイズです。この制限を超えるリクエストボディはサーバが拒否します。 |
disableKeepalive | keep-alive接続を無効にします。true に設定すると、サーバは最初のレスポンス送信後、すべての着信接続を閉じます。 |
maxConnectionsPerIp | IPごとに許可される同時クライアント接続の最大数です。0 は無制限 を意味します。 |
maxRequestsPerConnection | 接続ごとに処理される最大リクエスト数です。最後のリクエスト後にサーバは接続を閉じ、最後のレスポンスにConnection: close ヘッダーが追加されます。0 は無制限 を意味します。 |
config.wallarm.fallback¶
デフォルトでon
に設定されている場合、NGINXサービスは緊急モードに入ることが可能です。proton.dbまたはカスタムルールセットがWallarm Cloudからダウンロードできない場合(サービスが利用できない場合)、この設定によりWallarmモジュールは無効になり、NGINXを稼働状態に保ちます。
Podのannotation: sidecar.wallarm.io/wallarm-fallback
.
config.wallarm.mode¶
グローバルなトラフィックフィルトレーションモードです。可能な値:
-
monitoring
(デフォルト) -
safe_blocking
-
block
-
off
Podのannotation: sidecar.wallarm.io/wallarm-mode
.
config.wallarm.modeAllowOverride¶
Cloud内の設定を通じてwallarm_mode
の値を上書きする機能の管理です。可能な値:
-
on
(デフォルト) -
off
-
strict
Podのannotation: sidecar.wallarm.io/wallarm-mode-allow-override
.
config.wallarm.enableLibDetection¶
libdetectionライブラリを使用してSQL Injection攻撃を追加で検証するかどうかです。可能な値:
-
on
(デフォルト) -
off
Podのannotation: sidecar.wallarm.io/wallarm-enable-libdetection
.
config.wallarm.parseResponse¶
アプリケーションのレスポンスを攻撃検出のために解析するかどうかです。可能な値:
-
on
(デフォルト) -
off
レスポンス解析は、パッシブ検出および脅威再現テスト時の脆弱性検出に必要です。
Podのannotation: sidecar.wallarm.io/wallarm-parse-response
.
config.wallarm.aclExportEnable¶
ノードからCloudへ、denylisted IPからのリクエスト統計情報を送信する機能をon
で有効、off
で無効にします。
-
config.wallarm.aclExportEnable: "on"
(デフォルト)の場合、denylisted IPからのリクエストに関する統計情報はAttacksセクションに表示されます。 -
config.wallarm.aclExportEnable: "off"
の場合、denylisted IPからのリクエストに関する統計情報は表示されません。
Podのannotation: sidecar.wallarm.io/wallarm-acl-export-enable
.
config.wallarm.parseWebsocket¶
WallarmはWebSocketsを完全にサポートします。デフォルトではWebSocketsのメッセージは攻撃解析されません。この機能を強制するには、API Securityのサブスクリプションプランをアクティベートし、この設定を使用してください。
可能な値:
-
on
-
off
(デフォルト)
Podのannotation: sidecar.wallarm.io/wallarm-parse-websocket
.
config.wallarm.unpackResponse¶
アプリケーションレスポンスで返される圧縮データを解凍するかどうかです:
-
on
(デフォルト) -
off
Podのannotation: sidecar.wallarm.io/wallarm-unpack-response
.
config.nginx.workerConnections¶
NGINXワーカープロセスが開くことができる同時接続数の最大値です。
デフォルト値: 4096
.
Podのannotation: sidecar.wallarm.io/nginx-worker-connections
.
config.nginx.workerProcesses¶
デフォルト値: auto
(CPUコア数に応じてワーカー数が自動設定されます)。
Podのannotation: sidecar.wallarm.io/nginx-worker-processes
.
config.nginx.logs.extended¶
NGINXにおいて拡張ログ記録を有効にします。拡張ログにはリクエスト時間、upstreamレスポンス時間、リクエスト長、接続の詳細等が含まれます。
5.3.0リリース以降にサポートされています。
デフォルト値: false
.
config.nginx.logs.format¶
config.nginx.logs.extended
がtrue
に設定されている場合の拡張ログの形式を指定します。text
およびjson
形式がサポートされています。
5.3.0リリース以降にサポートされています。
デフォルト値: text
.
postanalytics.external.enabled¶
別ホストにインストールされたWallarmのpostanalytics(Tarantool)モジュールを使用するか、Sidecarソリューションのデプロイ時にインストールされるモジュールを使用するかを決定します。
この機能はHelmリリース4.6.4からサポートされています。
可能な値:
-
false
(デフォルト):Sidecarソリューションによってデプロイされたpostanalyticsモジュールを使用します。 -
true
:有効にした場合、postanalytics.external.host
およびpostanalytics.external.port
に外部のpostanalyticsモジュールのアドレスを指定してください。
true
に設定した場合、Sidecarソリューションはpostanalyticsモジュールを実行せず、指定されたpostanalytics.external.host
およびpostanalytics.external.port
で接続を試みます。
postanalytics.external.host¶
別途インストールされたpostanalyticsモジュールのドメインまたはIPアドレスです。postanalytics.external.enabled
がtrue
に設定されている場合、必須項目です。
この機能はHelmリリース4.6.4からサポートされています。
例: tarantool.domain.external
または10.10.0.100
。
指定されたホストは、Sidecar HelmチャートがデプロイされているKubernetesクラスターからアクセス可能である必要があります。
postanalytics.external.port¶
Wallarmのpostanalyticsモジュールが稼働するTCPポートです。デフォルトでは、Sidecarソリューションがこのポート(3313)でモジュールをデプロイするため、ポート3313を使用します。
postanalytics.external.enabled
がtrue
に設定されている場合、外部ホスト上でモジュールが稼働しているポートを指定してください。
controller.admissionWebhook.certManager.enabled¶
既定のcertgen
ではなく、admission webhook証明書の生成にcert-manager
を使用するかどうかです。リリース4.10.7以降でサポートされています。
デフォルト値: false
.
controller.admissionWebhook.secret.enabled¶
既定のcertgen
ではなく、admission webhook用の証明書を手動でアップロードするかどうかです。リリース4.10.7以降でサポートされています。
デフォルト値: false
.
true
に設定した場合、base64エンコードされたCA証明書、サーバ証明書、および秘密鍵を指定してください。例: