データベース

フォームが照会するデータベース。それぞれがデータベースの認証情報で接続します

  1. このセクションの内容
  2. 仕組み
  3. 7.5.0 へのアップグレード
  4. 使用中の認証情報
  5. データベースを管理できるユーザー
  6. 構成シード
  7. REST API

管理者向けです。フォームが照会するデータベースに名前を付け、それぞれが接続に使う認証情報を選び、テストします。


このセクションの内容

ページ 内容
データベースページ データベースのリスト、その列、データベースを追加するダイアログ
データベースのページ データベースのタブ、それを照会するフォーム、接続テストと削除
フォームでのデータベース フィールドの dbConfig がデータベースを指定する方法と、7.5.0 より前に書かれたフォーム

仕組み

7.5.0 からは、 データベース は独立した接続で、 接続 > データベース の シークレットストア と ランナー の間で追加します。 データベースは次の三つを持ちます。

フィールド 内容
名前 フィールドの dbConfig がそれを照会するために指定する名前。たとえば cmdb
説明 用途
認証情報 接続に使う、 接続 > 認証情報 にある種類が データベース の認証情報

接続に関するすべては、これまでどおり認証情報が保持します。データベースの種類(MySQL、MSSQL、PostgreSQL、Oracle、MongoDB)、 ホストとポート、データベース名、TLS、ユーザーとパスワードで、これらは暗号化して保存するか、 シークレットストア から読み込みます。 データベース自体はアドレスもシークレットも持たないので、データベースとランナーは同じ方法で認証情報を選びます。

フィールドは、 dbConfig でデータベースを指定して照会します。

- name: city
  type: enum
  dbConfig: cmdb            # a database of Connections > Databases
  query: select name from cmdb.city

データベースではない名前は、7.5.0 より前と同じく種類がデータベースの認証情報として検索されるので、古いフォームは変更なしで 動作し続けます( フォームでのデータベース を参照)。


7.5.0 へのアップグレード

アップグレードは 接続 > データベース を一度だけ埋めるので、既存のフォームは変更なしで動作し続けます。

種類がデータベースの認証情報ごとに、その認証情報の名前と説明を持ち、その認証情報で接続するデータベースを一つ作ります。 dbConfig で認証情報を指定しているフォームは、同じ名前のデータベースを見つけるようになり、そのデータベースは同じ認証情報で 接続します。結果は同じです。認証情報はすべてのフィールドをそのまま保持します。

アップグレードは一度だけ実行されます。その後に削除したデータベースが再び作られることはなく、後から追加したデータベースの認証情報には、 自分で追加するまでデータベースはありません。


使用中の認証情報

データベースが接続に使う認証情報は、ランナーがサインインに使う認証情報と同じく使用中になります。

データベースがそれを指定している間は、削除も名前の変更もできません。そのページの 使用元 タブにはデータベースが表示されます( 使用中の認証情報 を参照)。データベースを削除しても、その認証情報はそのまま残ります。


データベースを管理できるユーザー

データベースは、指定する認証情報のロールオプションに従います。

リスト、データベースのページ、その API には、認証情報と同じくロールオプション showSettings または showConnectionsSettings が必要です。 管理者だけが指定できる認証情報(パスワードをシークレットストアから読み込むものなど)でデータベースを接続させられるのは管理者だけです ( 認証情報を変更できるユーザー を参照)。それを照会するフォームはその認証情報で接続し、 接続テスト はそのシークレットをサーバーに送るためです。ほかのユーザーも、すでに指定されている認証情報のままデータベースを保存し直すことはできます。

構成シード で宣言されたデータベースは、そのページでは読み取り専用です。代わりにシードファイルで変更してください。


構成シード

シードは、 databases: セクションでデータベースを宣言します。このセクションは、指定する認証情報の後に適用されます。

各項目には name 、種類がデータベースの credential 、任意で description があります。認証情報は同じシードの credentials セクションのものでも、アプリで作成したものでもかまいません。

credentials:
  items:
    - name: cmdb-login
      credential_type: database
      db_type: mysql
      host: cmdb.example.com
      port: 3306
      user: svc_forms
      password: ${SEED_CMDB_PW}

databases:
  items:
    - name: cmdb                 # the name a field's dbConfig gives
      description: The CMDB
      credential: cmdb-login     # a credential of type database

完全な 例 と、シードが宣言したものをどう管理するかについては 管理対象オブジェクト を参照してください。


REST API

スクリプトは、ページと同じロールオプションで、 /api/v2/database の下の REST API を通じてデータベースを管理します。

呼び出し 動作
GET /api/v2/database データベースを一覧表示します。それぞれに認証情報のデータベースの種類、データベース、ホスト、ポートと、それを照会するフォームの数( used_by_count )が付きます
GET /api/v2/database?name=<name> その名前のデータベースを取得します
GET /api/v2/database/<id> 一つのデータベースを取得します
POST /api/v2/database データベースを追加します。 name 、 credential 、任意で description
PUT /api/v2/database/<id> データベースを変更します
DELETE /api/v2/database/<id> データベースを削除します。その認証情報は残ります
POST /api/v2/database/<id>/check その認証情報で接続をテストします
curl -X POST https://forms.example.com/api/v2/database \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  -d '{ "name": "cmdb", "description": "The CMDB", "credential": "cmdb-login" }'

存在しない credential 、または種類がデータベースではない credential は 400 で拒否されます。すべての変更は監査ログに記録されます。