メインコンテンツへ
Section 10第2部 Control Layer

Profile を調整する

Catalog 本体は触らずに、受発注システム向けへ管理策を調整してみましょう。パスワード文字数の差し替えや本文の書き足し、id パターンでの一括選択に挑戦します。

  • 本文の中の変えたい値を、Catalog の params として変数にできる。
  • Profile の set-parameters で、システムごとの値を差し込める。
  • alters と adds が何をする仕組みかを説明できる。
  • params と set-parameters の役割分担(Catalog 側と Profile 側)を説明できる。

受発注システムは取引先のデータを扱うので、情報システム部はパスワードの最低文字数を、社内標準の 12 文字より厳しい 16 文字にすると決めました。

素直に考えると、社内基準カタログの本文を書き替えたくなります。しかしカタログは全社の基準なので、そこを「16 文字以上」にすると、全システムの基準が変わってしまいます。かといって受発注システム専用のカタログを別に作れば、同じ条文の複製が 2 つになり、改定のたびに両方を直す羽目になります。

OSCAL の答えは、Catalog に「あとで変えられる場所」をあらかじめ用意しておき、Profile の側からシステムごとの値を差し込む、という分業です。

Catalog 側に置かれた変数:params

まず Catalog 側の準備です。本文の中の「システムごとに変わりうる値」を、params という変数にします。param 1 件が持つ項目は次のとおりです。

項目役割mk-ac-01 での値
id変数の識別子。「管理策の id + prm + 連番」が慣例mk-ac-01_prm_1
label変数の人向けの名前パスワードの最低文字数
values何も差し込まれなかったときに使う既定値"12"

そして本文側では、値が入っていた場所を {{ insert: param, mk-ac-01_prm_1 }} という差し込みの記法に置き換えます。「ここに mk-ac-01_prm_1 の値を入れる」という意味の穴です。この記法はコロンを含むので、prose 全体をダブルクオートで囲む必要があります。

書き替えた mk-ac-01 はこうなります。

    - id: mk-ac-01
      title: パスワードの管理
      params:
        - id: mk-ac-01_prm_1
          label: パスワードの最低文字数
          values:
            - "12"
      parts:
        - id: mk-ac-01_statement
          name: statement
          prose: "情報システムのパスワードは {{ insert: param, mk-ac-01_prm_1 }} 文字以上とし、他のサービスと使い回さない。初期パスワードは初回利用時に変更する。"

この形は、SP 800-53 の公式 Catalog が全編で使っているものです。実物の ac-1 という管理策の本文には、こういう行があります。

                  prose: 'Develop, document, and disseminate to {{ insert: param, ac-1_prm_1 }}:'

id の慣例(ac-1_prm_1)も差し込みの記法も、公式と同じです。なお公式が使っている一重引用符(')も、ダブルクオートと同じように値を囲む書き方として YAML で使えます。この講座ではダブルクオートに統一しています。

クイズ(コードを書く)

mk-ac-01 の本文にある「12 文字」の 12 を変数にしてください。変数の名前(label)は「パスワードの最低文字数」、既定値はダブルクオートで囲んだ 12 です。変数の id は慣例から自分で組み立てます。

この改定を社内基準カタログに取り込んだものを、版 1.2.0 とします(中身が変わったので uuid・last-modified・version を変更します)。以降のセクションの社内基準カタログはこの版です。

値を差し込む:modify と set-parameters

Catalog 側に、値を差し込む穴ができたので、Profile 側から値を差し込みます。使うのは modify という調整の置き場と、その中の set-parameters です。

項目役割受発注システム基準での値
param-idどの変数に差し込むかmk-ac-01_prm_1
values差し込む値"16"
  merge:
    as-is: true
  modify:
    set-parameters:
      - param-id: mk-ac-01_prm_1
        values:
          - "16"

これで、この Profile を通して見た mk-ac-01 の本文は「パスワードは 16 文字以上」になります。社内基準カタログの既定値 12 はそのままなので、他のシステムには影響しません。

クイズ(コードを書く)

受発注システム基準プロファイルに、「パスワードの最低文字数を 16 にする」という調整を書き足してください。差し込み先の変数の id は、Catalog に定義したものを思い出して自分で書きます。

本文を書き足す:alters と adds

値の差し替えだけでなく、本文への書き足しもできます。受発注システムでは、パスワードに加えてワンタイムコードによる追加の確認を求めることになりました。この一文を、Profile の側から mk-ac-01 に足します。

使うのは modify の中の alters(変更の一覧)です。1 件が「どの管理策を」(control-id)と「何をするか」(adds)を持ちます。

項目役割今回の値
control-id変更する管理策mk-ac-01
adds追加する内容と位置手引きの part を末尾に
positionどこに追加するか。before、after、starting、ending の 4 語ending(中身の末尾)
  modify:
    set-parameters:
      - param-id: mk-ac-01_prm_1
        values:
          - "16"
    alters:
      - control-id: mk-ac-01
        adds:
          - position: ending
            parts:
              - id: mk-ac-01_order-system
                name: guidance
                prose: 受発注システムでは、社外の取引先データを扱うため、パスワードに加えてワンタイムコードによる追加の確認を行う。

追加しているのは part 1 件です。name は guidance(手引き)にしました。statement、example に続く 3 つ目の part の種類で、本文そのものではなく運用上の指示や補足を置くのによく使われる名前です。position の ending は「mk-ac-01 の中身の末尾に付ける」という意味です。

ここでも本文の原則は変わりません。社内基準カタログの mk-ac-01 は 1 文字も変わっておらず、書き足しの指示が Profile 側に記録されているだけです。

id のパターンで選ぶ:matching

さて、話は変わりますが、管理策を選択するときに使える、もう 1 つの方法を紹介します。前のセクションの include-controls では id を 1 件ずつ列挙しましたが、matching を使うと id のパターンでまとめて選べます。

  imports:
    - href: mk-standards-catalog.yaml
      include-controls:
        - matching:
            - pattern: mk-ac-*

* は「任意の文字列」にあてはまる記号(ワイルドカード)です。mk-ac-* は mk-ac-01 と mk-ac-02 の両方にあてはまるので、この 1 行でアクセス管理の管理策を全部選んだことになります。

便利ですが、性質が 1 つ変わることに注意してください。with-ids の列挙は「この 4 件」という固定の選択ですが、matching は「このパターンに合うもの全部」という条件の選択です。カタログの側に mk-ac-03 が増えれば、この Profile の選択結果も警告なく増えます。それが意図どおりのこともあれば、意図しない適用拡大のこともあります。

完成形:受発注システム基準プロファイル 1.1.0

set-parameters と alters を取り込み、版を進めた完成形です。

profile:
  uuid: fdaaced9-eb54-4000-b207-dab9da0fe8f5
  metadata:
    title: ミナト精機 受発注システム基準プロファイル
    last-modified: "2026-07-15T09:00:00+09:00"
    version: "1.1.0"
    oscal-version: "1.2.2"
  imports:
    - href: mk-standards-catalog.yaml
      include-controls:
        - with-ids:
            - mk-ac-01
            - mk-ac-02
            - mk-ph-01
            - mk-bk-01
  merge:
    as-is: true
  modify:
    set-parameters:
      - param-id: mk-ac-01_prm_1
        values:
          - "16"
    alters:
      - control-id: mk-ac-01
        adds:
          - position: ending
            parts:
              - id: mk-ac-01_order-system
                name: guidance
                prose: 受発注システムでは、社外の取引先データを扱うため、パスワードに加えてワンタイムコードによる追加の確認を行う。

この 1 ファイルに、受発注システムのセキュリティ基準の決定がすべて入っています。ポイントとしては、社内基準カタログ本体には一切手を触れていないことです。

理解の確認

クイズ

バックアップの頻度(mk-bk-01 の「毎日」)も、システムごとに変えられるようにしたくなりました。最初にやるべきことはどれですか。

クイズ

pattern: mk-ac-* の matching で選択を書いた Profile があります。のちに社内基準カタログへ mk-ac-03 が追加されたら、この Profile の選択はどうなりますか。

次へ

Catalog で一覧を書き、Profile で選んで調整する。Control Layer の 2 つのモデルがつながりました。残るは 1 つ、規格対応表の Excel にあたる Mapping Collection です。次のセクションでは、社内基準と CSF 2.0 の「対応表」を書きます。

このセクションは OSCAL 1.2.2 系の仕様に基づいて執筆しています。