評価とテスト SUSE® Security
サンプルアプリケーション
SUSE® Security コンポーネントをデプロイした後、提供されたサンプルテストアプリケーションを使用して評価できます。これらは、docker hub の 'nvbeta リポジトリにあります。
典型的な Kubernetes ベースのテスト環境には、マスターノードと 2 から 3 のワーカーノードがあります。アプリケーションポッドと SUSE® Security コンテナがマスターノードにデプロイされるかどうかを制御できます(デフォルトではオフ)。
Kubernetes テストプラン
Nginx、Nodejs、および Redis を使用してマルチティアアプリケーションをデプロイするには、以下のサンプルを使用してください(以下の順序に従って)。これらは、OpenShift、Rancher およびその他の Kubernetes ベースのツールでのデプロイのために編集する必要があるかもしれません。
デモネームスペースを作成する
kubectl create namespace demo
|
以下のサンプルは、Kubernetes 1.16+ に必要な apiVersion: apps/v1 を使用しています。 |
この yaml を使用して Redis サービスとデプロイメントを作成します:
apiVersion: v1
kind: Service
metadata:
name: redis
namespace: demo
spec:
ports:
- port: 6379
protocol: "TCP"
name: "cluster-tcp-6379"
clusterIP: None
selector:
app: redis-pod
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-pod
namespace: demo
spec:
selector:
matchLabels:
app: redis-pod
template:
metadata:
labels:
app: redis-pod
spec:
containers:
- name: redis-pod
image: redis
この yaml を使用して Nodejs サービスとデプロイメントを作成します:
apiVersion: v1
kind: Service
metadata:
name: node
namespace: demo
spec:
ports:
- port: 8888
protocol: "TCP"
name: "cluster-tcp-8888"
clusterIP: None
selector:
app: node-pod
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: node-pod
namespace: demo
spec:
selector:
matchLabels:
app: node-pod
replicas: 3
template:
metadata:
labels:
app: node-pod
spec:
containers:
- name: node-pod
image: nvbeta/node
この yaml を使用して Nginx サービスとデプロイメントを作成します:
apiVersion: v1
kind: Service
metadata:
name: nginx-webui
namespace: demo
spec:
ports:
- port: 80
name: webui
protocol: TCP
type: NodePort
selector:
app: nginx-pod
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-pod
namespace: demo
spec:
selector:
matchLabels:
app: nginx-pod
template:
metadata:
labels:
app: nginx-pod
spec:
containers:
- name: nginx-pod
image: nvbeta/swarm_nginx
ports:
- containerPort: 80
protocol: TCP
Nginx-webui サービスに外部からアクセスするには、NodePort によってポート 80 にマッピングされたランダムポートを見つけます:
kubectl get svc -n demo
次に、Kubernetes ノードのいずれかのパブリック IP アドレス/ポートに接続します。例: http://(public_IP):(NodePort)
SUSE® Security をデプロイした後、デモアプリケーションを通じてテストトラフィックを実行し、ホワイトリストルールを生成した後、すべてのサービスをモニターまたはプロテクトモードに移行して、違反や攻撃を確認できます。
Kubernetes でのネットワーク違反の生成
Nodejs ポッドから違反を生成するには、ポッドを見つけます:
kubectl get pod -n demo
それでは、いくつかの違反を試してみてください(ノードポッド名を置き換えます):
kubectl exec node-pod-name curl www.google.com -n demo
また、以下の例のように、172.30.2.21のような別のノードポッドの内部IPアドレスを見つけて、ノード間で接続します:
kubectl exec node-pod-name curl 172.30.2.21:8888 -n demo
プロセスおよびファイル保護テスト
コンテナにexecして、apt-get update、ssh、scpなどのコマンドを実行することで、さまざまなプロセスおよびファイルアクティビティを試してください。許可されていないプロセスアクティビティやファイルアクセスは、通知にアラートを生成します。
レジストリスキャンおよび入場制御
一般的なテストとして、Assets → Registries にあるレジストリでイメージスキャンを構成する、という方法が挙げられます。スキャンが完了したら、ポリシーで入場制御ルールを構成します。入場制御を有効にし、イメージに高い脆弱性がある場合は拒否するルールを設定してください。次に、高い脆弱性を持つイメージを選択し、Kubernetesにデプロイしてみてください。デプロイメントは保護モードでブロックされ、通知 → セキュリティリスクにイベントが表示されます。
より高度な入場制御テストは、ルール内の異なる基準を使用したり、基準を組み合わせたりすることで行うことができます。
Dockerネイティブテストプラン
SUSE® Security コンポーネントとサンプルアプリケーションをデプロイした後、実行中のコンテナを発見、監視、保護することができるようになります。以下のテストプランは、許可されたアプリケーションの動作のランタイム違反を生成し、コンテナの脆弱性をスキャンするための提案を提供します。
上記のリンクが機能しない場合は、パスワード nv1851blvd を使用して、私たちのウェブサイトから ダウンロード できます。
SUSE® Securityは、DDOS攻撃など、コンテナへの脅威を検出することもできます。コンテナに対してそのような攻撃を生成するツールを実行すると、これらの結果はネットワークアクティビティとダッシュボードに表示されます。
例えば、高いペイロードを持つシンプルなpingコマンドは、コンソールにPing.Death攻撃を表示します。これを試すには、コンテナのIPアドレス(コンテナの内部IP)に対して次の操作を行ってください。
ping <container_ip> -s 40000
Kubernetesでは、マスターを含む任意のノードからこれを行うことができます。他の環境では、コンテナが実行されているノードにログインする必要がある場合があります。