正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

コンプライアンスフレームワークGraphQL

  • プラン: Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

を使用して、トップレベルグループのコンプライアンスフレームワークを管理します。

前提要件

  • コンプライアンスフレームワークを作成、編集、削除するには、次のいずれかのユーザーである必要があります:

コンプライアンスフレームワークを作成

トップレベルグループの新しいコンプライアンスフレームワークを作成します。

コンプライアンスフレームワークを作成するには、createComplianceFrameworkミューテーションを使用します:

mutation {
  createComplianceFramework(input: {
    namespacePath: "my-group",
    params: {
      name: "SOX Compliance",
      description: "Sarbanes-Oxley compliance framework for financial reporting",
      color: "#1f75cb",
      default: false
    }
  }) {
    errors
    framework {
      id
      name
      description
      color
      default
      namespace {
        name
      }
    }
  }
}

コンプライアンスフレームワークは、以下の場合に作成されます:

  • 返されたerrorsオブジェクトが空である。
  • 200 OKで応答する。

要件を持つフレームワークを作成

  • プラン: Ultimate

特定の要件とコントロールを含むフレームワークを作成できます:

mutation {
  createComplianceFramework(input: {
    namespacePath: "my-group",
    params: {
      name: "Security Framework",
      description: "Security compliance framework with SAST and dependency scanning",
      color: "#e24329",
      default: false
    }
  }) {
    errors
    framework {
      id
      name
      description
      color
      default
      namespace {
        name
      }
    }
  }
}

フレームワークを作成した後、作成ミューテーションによって返されるフレームワークを使用して、要件を追加できます。

コンプライアンスフレームワークの一覧表示

トップレベルグループのすべてのコンプライアンスフレームワークをリストします。

groupクエリを使用して、トップレベルグループのコンプライアンスフレームワークのリストを表示できます:

query {
  group(fullPath: "my-group") {
    id
    complianceFrameworks {
      nodes {
        id
        name
        description
        color
        default
        pipelineConfigurationFullPath
      }
    }
  }
}

結果のリストが空の場合、そのグループのコンプライアンスフレームワークは存在しません。

コンプライアンスフレームワークを更新

トップレベルグループの既存のコンプライアンスフレームワークを更新します。

コンプライアンスフレームワークを更新するには、updateComplianceFrameworkミューテーションを使用します。グループのすべてのコンプライアンスフレームワークを一覧表示して、フレームワークを取得できます。

mutation {
  updateComplianceFramework(input: {
    id: "gid://gitlab/ComplianceManagement::Framework/1",
    params: {
      name: "Updated SOX Compliance",
      description: "Updated Sarbanes-Oxley compliance framework",
      color: "#6b4fbb",
      default: true
    }
  }) {
    errors
    framework {
      id
      name
      description
      color
      default
      namespace {
        name
      }
    }
  }
}

コンプライアンスフレームワークは、以下の場合に更新されます:

  • 返されたerrorsオブジェクトが空である。
  • 200 OKで応答する。

コンプライアンスフレームワークを削除

トップレベルグループからコンプライアンスフレームワークを削除します。

コンプライアンスフレームワークを削除するには、destroyComplianceFrameworkミューテーションを使用します。グループのすべてのコンプライアンスフレームワークを一覧表示して、フレームワークを取得できます。

mutation {
  destroyComplianceFramework(input: {
    id: "gid://gitlab/ComplianceManagement::Framework/1"
  }) {
    errors
  }
}

コンプライアンスフレームワークは、以下の場合に削除されます:

  • 返されたerrorsオブジェクトが空である。
  • 200 OKで応答する。

コンプライアンスフレームワークをプロジェクトに適用

1つ以上のコンプライアンスフレームワークをプロジェクトに適用します。

前提要件:

  • プロジェクトのメンテナーまたはオーナーのロールが必要です。
  • プロジェクトは、コンプライアンスフレームワークを持つグループに属している必要があります。

プロジェクトにコンプライアンスフレームワークを適用するには、projectUpdateComplianceFrameworksミューテーションを使用します:

mutation {
  projectUpdateComplianceFrameworks(input: {
    projectId: "gid://gitlab/Project/1",
    complianceFrameworkIds: [
      "gid://gitlab/ComplianceManagement::Framework/1",
      "gid://gitlab/ComplianceManagement::Framework/2"
    ]
  }) {
    errors
    project {
      id
      complianceFrameworks {
        nodes {
          id
          name
          color
        }
      }
    }
  }
}

フレームワークは、以下の場合に適用されます:

  • 返されたerrorsオブジェクトが空である。
  • 200 OKで応答する。

プロジェクトからコンプライアンスフレームワークを削除

プロジェクトからすべてのコンプライアンスフレームワークを削除するには、空の配列を渡します:

mutation {
  projectUpdateComplianceFrameworks(input: {
    projectId: "gid://gitlab/Project/1",
    complianceFrameworkIds: []
  }) {
    errors
    project {
      id
      complianceFrameworks {
        nodes {
          id
          name
        }
      }
    }
  }
}

要件とコントロールの操作

を使用して、コンプライアンスフレームワークの要件とコントロールを管理できます。

フレームワーク要件をクエリ

  • プラン: Ultimate

コンプライアンスフレームワークの要件とコントロールを表示するには:

query {
  group(fullPath: "my-group") {
    complianceFrameworks {
      nodes {
        id
        name
        requirements {
          nodes {
            id
            name
            description
            controls {
              nodes {
                id
                name
                controlId
                controlType
              }
            }
          }
        }
      }
    }
  }
}

フレームワークに要件を追加

  • プラン: Ultimate

コンプライアンスコントロールを使用して、既存のフレームワークに要件を追加するには:

mutation {
  complianceFrameworkRequirementCreate(input: {
    frameworkId: "gid://gitlab/ComplianceManagement::Framework/1",
    name: "Security Scanning Requirement",
    description: "Ensure security scanning is enabled for all projects",
    controlIds: [
      "scanner_sast_running",
      "scanner_dep_scanning_running",
      "scanner_secret_detection_running"
    ]
  }) {
    errors
    requirement {
      id
      name
      description
      controls {
        nodes {
          id
          name
          controlId
        }
      }
    }
  }
}

外部コントロールの追加

  • プラン: Ultimate

外部コントロールを使用して要件を追加するには:

mutation {
  complianceFrameworkRequirementCreate(input: {
    frameworkId: "gid://gitlab/ComplianceManagement::Framework/1",
    name: "External Approval Requirement",
    description: "Require external system approval for deployments",
    externalControls: [{
      name: "ServiceNow Approval",
      externalUrl: "https://mycompany.service-now.com/api/approval",
      hmacSharedSecret: "my-secret-key"
    }]
  }) {
    errors
    requirement {
      id
      name
      description
      controls {
        nodes {
          id
          name
          controlType
          externalUrl
        }
      }
    }
  }
}

要件を更新

  • プラン: Ultimate

既存の要件を更新するには:

mutation {
  complianceFrameworkRequirementUpdate(input: {
    id: "gid://gitlab/ComplianceManagement::Requirement/1",
    name: "Updated Security Requirement",
    description: "Updated security scanning requirement with additional controls",
    controlIds: [
      "scanner_sast_running",
      "scanner_dep_scanning_running",
      "scanner_secret_detection_running",
      "scanner_container_scanning_running"
    ]
  }) {
    errors
    requirement {
      id
      name
      description
      controls {
        nodes {
          id
          name
          controlId
        }
      }
    }
  }
}

要件を削除

  • プラン: Ultimate

フレームワークから要件を削除するには:

mutation {
  complianceFrameworkRequirementDestroy(input: {
    id: "gid://gitlab/ComplianceManagement::Requirement/1"
  }) {
    errors
  }
}

エラー処理

経由でコンプライアンスフレームワークを操作する場合、次の一般的なエラーが発生する可能性があります:

  • Framework name already exists(フレームワーク名が既に存在します): 各フレームワーク名は、グループ内で一意である必要があります。
  • Invalid color format(無効な色の形式): 色は16進形式である必要があります(例: #1f75cb)。
  • 権限が不十分です: グループオーナーまたはadmin_compliance_framework権限を持つユーザーのみがフレームワークを管理できます。
  • Invalid control ID(無効なコントロール): コントロールは、サポートされているコンプライアンスコントロールと一致する必要があります。

応答のerrorsフィールドを常に確認して、ミューテーション中に発生する問題を処理してください。