Skip to main content

Kubernetesワークロードのセキュリティレポートを自動化

著者
Headshot of Rags Srinivas

Rags Srinivas

kubernetes header

2020年3月2日

0 分で読めます

はじめに

Snykでは、コンテナおよびクラウドネイティブのセキュリティソリューションの継続的な改善に取り組んでいます。その取り組みの一環として、Snyk ContainerのKubernetesインテグレーションでKubernetesワークロードをインポートし、脆弱なコンテナイメージやワークロードの設定ミスを特定できるようになりました。

クラウドワークロードのセキュリティを自動化し、DevOpsパイプラインにセキュリティチェックをネイティブに組み込むことで、手作業を増やすことなく、監視を一元化できます。たとえば、クラスターの詳細を一元管理コンソールに送信するサイトポリシーを必須化できます。設定ファイルにアノテーションを設定するだけで完了です。

このブログでは、新しい製品機能を使って、Snykで新しいプロジェクトが自動的に作成されるようにする方法をご紹介します。

ワークロードのセキュリティを自動化するアノテーションの追加

Kubernetesのアノテーションを使うと、ビルドのリリース番号、Gitブランチ、ログ情報への参照などのメタデータをオブジェクトに付加できます。インストールすると、SnykのKubernetesコントローラーはアノテーションキー `orgs.k8s.snyk.io/v1` を検索します。このキーの値にSnyk組織IDを設定すると、重要な情報がSnykに自動的に送信されます。組織IDはSnykで次の手順で確認できます。

Kubernetesが設定され接続済みで、インテグレーションIDが表示されたSnykのインテグレーション画面

次に、たとえばfilealpine.yamlファイルを作成し、annotations:セクションを追加します。続いて、ファイル内に `orgs.k8s.snyk.io/v1` で始まるアノテーションを追加します。

annotationsセクションで、キー `orgs.k8s.snyk.io/v1` の値として組織IDを指定してください。以下の例を参照してください。

たとえば、次のマニフェストファイルは、アノテーションを付けたワークロードを作成します。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: alpine
  namespace: default
  labels:
    app.kubernetes.io/name: alpine
  annotations:
    orgs.k8s.snyk.io/v1: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: alpine
  template:
    metadata:
      labels:
        app.kubernetes.io/name: alpine
    spec:
      containers:
      - name: alpine
        image: alpine:3.9
        command: ['sh', '-c', 'echo Hello from alpine pod! && sleep 360000']
        resources:
          requests:
            cpu: '100m'
            memory: '100Mi'
            cpu: '100m'
      securityContext: {}

追加したアノテーションにより、Snyk Kubernetesインテグレーションはワークロードの脆弱性情報をSnykに自動的にインポートします。

アノテーションを設定したワークロードを作成するには、次のコマンドを実行します。

kubectl create -f alpine.yaml

ダッシュボードでワークロードを監視する

ブラウザーを更新すると、ワークロード情報がSnykにインポートされているのを確認できます。

Ragsのminikubeクラスター内のalpineのKubernetesデプロイメントが表示されたSpinnakerのProjectsページのスクリーンショット

プロジェクトの詳細を確認すると、設定ミスのあるパラメーターが詳細エリアの上部に表示されます。YAMLファイルを変更するだけで、設定の問題を解消できます。

default/deployment.apps/hello の Kubernetes デプロイダッシュボード。拡大表示されたセキュアな設定パネルには、合格項目が1件、失敗項目が複数表示されています。

アノテーションを付けた2つ目のワークロードを実行すると、以下に示すように、そのワークロードの情報もSnykに送信されます。

AlpineおよびSpring BootのデプロイにおけるKubernetesリポジトリと脆弱性の深刻度別件数を示す、Snyk Projectsのダッシュボード

この新機能により、すべてのワークロード情報をレポート作成や問題の修正に活用できます。詳細を手動で追加する必要はなく、ワークロードにアノテーションを追加するだけです。作業負荷を軽減し、通常のワークフローの一環としてクラスターを簡単に監視できます。

まとめと次のステップ

Snyk組織IDを含むアノテーションを使って、特定のKubernetesワークロード情報をSnykに送信する方法をご紹介しました。

これで、クラスターの詳細を送信し、監視を一元化してセキュリティを強化する方法の説明は以上です。

Snykは、イメージレジストリ、Dockerfileリポジトリ、Kubernetesクラスターとのインテグレーションを含め、ソフトウェア開発ライフサイクル全体を通じてアプリケーション開発のセキュリティを支援します。今すぐ、Snykへのワークロードレポートを自動化しましょう。詳しい手順については、ドキュメントをご覧ください。

ソースコードの段階からインフラを保護

Snykはワークフロー内のIaCセキュリティとコンプライアンスを自動化し、構成ドリフトや不足しているリソースを検出します。