PostgreSQLは、ダッシュボードホストサービス、テストモニタサービス、およびダイナミックフォームフィールドサービスに必要です。

一般的な要件

メモ セキュリティを強化するには、SystemLinkサービスごとに個別のデータベースユーザを作成します。この最小権限のアプローチにより、各サービスは自身のデータベースとテーブルにのみアクセスできます。

PostgreSQLサーバを使用するようにサービスを構成する前に、以下を確認してください。

  • プロビジョニングされたPostgreSQLサーバ。最高のパフォーマンスとセキュリティを得るには、PostgreSQLインスタンスを他のアプリケーションと共有するのではなくSystemLink専用にすることをお勧めします。
  • PostgreSQLサーバのホスト名。
  • 少なくとも1人のデータベースユーザの資格情報。
  • データベースとユーザを作成するためのPostgreSQL管理者権限。
  • 安全な接続のためのTLS証明書。(推奨)

初回起動時および一部のアップグレードシナリオでは、各サービスが必要なスキーマとテーブルを作成します。セットアップ後、ユーザの「作成」権限を取り消すことができます。以下の表は、通常の操作に必要な最小権限を示します。

表 72. 操作権限
場所 権限
データベース CONNECT
サービススキーマ CREATE、USAGE
スキーマ内のテーブル SELECT、INSERT、UPDATE、DELETE
メモ スキーマデータには、SystemLink WebアプリケーションまたはそれぞれのサービスAPIを介してアクセスする必要があります。スキーマは内部実装とみなされ、予告なく変更される場合があります。

ダッシュボードホストサービスからのデータを外部のPostgreSQLサーバに保存する

データベースとユーザを作成し、そのユーザにデータベースに対するCREATE権限があることを確認します。デフォルトのデータベース名はgrafanaです。

Helmでシークレットを管理する場合は、systemlink-secrets.yamlにデータベース資格情報を追加します。

dashboardhost:
  secrets:
    database:
      host: "<postgresql-hostname>:<port>"
      user: "systemlink"
      password: "<database-password>"

systemlink-values.yamlで、デフォルトのdashboardhost.grafana.extraSecretMountsおよびdashboardhost.grafana.extraConfigmapMounts構成が有効になっていることを確認します。

dashboardhost:
  grafana:
    extraSecretMounts:
      - name: *dashboardhostdbSecret
        secretName: *dashboardhostdbSecret
        defaultMode: 0440
        mountPath: "/etc/secrets/dashboardhost"
        readOnly: true
    extraConfigmapMounts:
      - name: *postgresCertificateConfigMap
        mountPath: "/etc/ssl/certs/dashboardhost/"
        subPath: *postgresCertificateFileName
        configMap: *postgresCertificateConfigMap
        readOnly: true

テストモニタサービスからのデータを外部のPostgreSQLサーバに保存する

データベースとユーザを作成し、そのユーザにデータベースに対するCREATE権限があることを確認します。

今後、テストモニタサービスチャートが更新されたときに、スキーマとテーブルの変更が必要になる場合があります。これらを変更するには、テストモニタサービスチャートがスキーマとテーブルを所有するユーザとして動作する必要があります。日常の操作を処理するユーザの他に、より高い権限を持つ別のユーザを指定して、データベースの移行を実行することができます。

PostgreSQL接続は、接続文字列 (推奨) または個々の接続パラメータを使用して構成できます。

接続文字列を使用する (推奨):
  • 資格情報をsystemlink-secrets.yamlに追加します。
    testmonitorservice:
      secrets:
        database:
          connectionString: "Host=<postgresql-hostname>;Database=<database-name>;Username=<database-user>;Password=<database-password>;SslMode=Require"
          migrationConnectionString: "Host=<postgresql-hostname>;Database=<database-name>;Username=<migration-user>;Password=<migration-password>;SslMode=Require"
  • 次に、systemlink-values.yamlで接続を構成します。
    testmonitorservice:
      database:
        connectionString:
          secretName: "testmonitorservicedb-connection"
          connectionStringKey: "connection-string"
          migrationConnectionStringKey: "migration-connection-string"
        tls:
          enabled: true
          existingConfigMap: *postgresCertificateConfigMap
          certificateSubPath: *postgresCertificateFileName

個々の接続パラメータを使用する:

  • または、接続パラメータを個別に指定することもできます。資格情報をsystemlink-secrets.yamlに追加します。
    testmonitorservice:
      secrets:
        database:
          connectionPassword: "<database-password>"
          migrationConnectionPassword: "<migration-password>"
  • 次に、systemlink-values.yamlで接続を構成します。デフォルトのデータベース名はnisystemlinkで、デフォルトのユーザはnisystemlinkです。
    testmonitorservice:
      database:
        connectionInfo:
          host: "<postgresql-hostname>"
          port: "5432"
          dbName: "nisystemlink"
          user: "nisystemlink"
          migrationUser: "<migration-user>"
          secretName: "testmonitorservicedb-connection"
          passwordKey: "password"
          migrationPasswordKey: "migration-password"
        tls:
          enabled: true
          existingConfigMap: *postgresCertificateConfigMap
          certificateSubPath: *postgresCertificateFileName

ダイナミックフォームフィールドサービスからのデータを外部のPostgreSQLサーバに保存する

データベースとユーザを作成し、そのユーザにデータベースに対するCREATE権限があることを確認します。

今後、ダイナミックフォームフィールドサービスチャートが更新されたときに、スキーマとテーブルの変更が必要になる場合があります。これらを変更するには、ダイナミックフォームフィールドサービスチャートがスキーマとテーブルを所有するユーザとして動作する必要があります。日常の操作を処理するユーザの他に、より高い権限を持つ別のユーザを指定して、データベースの移行を実行することができます。

PostgreSQL接続は、接続文字列 (推奨) または個々の接続パラメータを使用して構成できます。

接続文字列を使用する (推奨):

  • 資格情報をsystemlink-secrets.yamlに追加します。
    dynamicformfields:
      secrets:
        database:
          connectionString: "Host=<postgresql-hostname>;Database=<database-name>;Username=<database-user>;Password=<database-password>;SslMode=Require"
          migrationConnectionString: "Host=<postgresql-hostname>;Database=<database-name>;Username=<migration-user>;Password=<migration-password>;SslMode=Require"
  • 次に、systemlink-values.yamlで接続を構成します。
    dynamicformfields:
      database:
        connectionString:
          secretName: "dynamicformfields-db-connection"
          connectionStringKey: "connection-string"
          migrationConnectionStringKey: "migration-connection-string"
        tls:
          enabled: true
          existingConfigMap: *postgresCertificateConfigMap
          certificateSubPath: *postgresCertificateFileName

または、接続パラメータを個別に指定することもできます。

  • 資格情報をsystemlink-secrets.yamlに追加します。
    dynamicformfields:
      secrets:
        database:
          connectionPassword: "<database-password>"
          migrationConnectionPassword: "<migration-password>"
  • 次に、systemlink-values.yamlで接続を構成します。デフォルトのデータベース名はnisystemlinkで、デフォルトのユーザはnisystemlinkです。
    dynamicformfields:
      database:
        connectionInfo:
          host: "<postgresql-hostname>"
          port: "5432"
          dbName: "nisystemlink"
          user: "nisystemlink"
          migrationUser: "<migration-user>"
          secretName: "dynamicformfields-db-connection"
          passwordKey: "password"
          migrationPasswordKey: "migration-password"
        tls:
          enabled: true
          existingConfigMap: *postgresCertificateConfigMap
          certificateSubPath: *postgresCertificateFileName"