背景
一般的に、企業におけるDBAの数と開発者の数は大きく異なります。1人のDBAが100人から1000人規模の開発者をカバーすることがあり、しかもそれらの開発者は多くの場合、異なるビジネスラインから来ています。DBAは、開発、テスト、本番環境へのリリースの各段階で、テーブル構造の設計、変更、データ変更など、データベースの変更プロセスに深く関与する必要があります。想像に難くないように、このプロセスをすべて「顔見知り」だけに頼ると、DBAと開発者の満足度は氷点下に落ち込むだけでなく、オンラインでの問題発生確率も大幅に高まります。
分析すると、上記のシナリオは実際には2つの側面の問題を反映しています。1つはDBAと開発チームの連携方法であり、DBAが毎日何百人もの開発者を「接客」する「カスタマーサポート」にならないようにする方法です。もう1つは、データベースの変更ごとに管理・制御を行い、「データベース削除で逃げる」という事態を防ぐ方法です。ODC V4.2.0は、これら2つの問題に対して独自の答えを提供しています。それは、プロジェクトを核とした連携と、リスクレベルを核とした管理・制御です。
シナリオの概要
連携に関して、ODC V4.2.0は「プロジェクト」という概念を導入しました。ユーザーがODC上で行うすべてのデータベース操作は、必ず1つのプロジェクト内で完了されます。実際のシナリオでは、1つのプロジェクトは、1つのアプリケーション、1つの開発チーム、1つの開発部門、1つのビジネスラインなどに対応でき、企業の実際のアーキテクチャ状況に応じて柔軟に決定できます。ODCは、関連する開発チームメンバーとデータベースを1つのプロジェクトに割り当てることで、プロジェクト内のメンバーが「セルフサービス式」でデータベースを操作できるようにし、連携効率を向上させます。
リスク管理に関して、ODCはRBACモデルに基づいて細粒度の権限管理システムを構築し、その上でプロジェクトロールを拡張し、実際の使用シナリオにより適合させました。また、ODC上でデータベースのアカウント情報を管理することで、データベースのアカウント情報配布に伴うセキュリティリスクを回避できます。最後に、DBAはグローバルな管理ルールを策定でき、これらのルールは各プロジェクトに適用されるため、各プロジェクトで煩雑な設定を行う必要がありません。ここでの管理ルールには、SQL開発ルールとリスクレベルの2つの側面が含まれます。
本記事では、ODCがこれらのコアコンセプトを活用して連携能力を向上させ、データベースの変更ごとにセキュリティ管理を行う方法について詳しく説明します。
プロジェクトを基盤とした効率的な連携ユニットの構築
ODCのプロジェクトには、Developer、DBA、Ownerの3種類のプロジェクトロールが組み込まれており、現実世界の異なる職位に対応し、それぞれ異なる権限を持っています。例えば、プロジェクトDBAは、そのプロジェクトのデータベースの機密列を設定して機密データの漏洩を防ぐことができ、また、チケット承認プロセスにおける承認ノードとして機能し、Developerが提出する各種SQL変更チケットを承認することができます。さらに、プロジェクトOwnerは、プロジェクトのメンバーやロールなどの基本情報を管理することもできます。その後、DBAがグローバルにデータソースを登録すると、そのデータソース下のデータベースをプロジェクトに割り当てることができます。これにより、プロジェクトチームのメンバーは、プロジェクト内でデータベースに対する開発と連携を行うことができます。
Web版ODCにログインします。
プロジェクト一覧で対象プロジェクトをクリックして開き、メンバー > メンバーを追加 をクリックし、指定したユーザーを選択した後、確定 をクリックします。

メンバーを追加した後、データベース タブに切り替え、データベースの追加 をクリックして、対象データベースを現在のプロジェクトに追加します。

追加が完了したら、プロジェクトのデータベースリストで対象データベースを確認できます。

追加が完了すると、各プロジェクトメンバーが発行するデータベース変更チケットは、対応するプロジェクトのチケットリストで確認できます。

多次元要素を総合したセキュリティ管理体制の構築
RBACモデルに基づくきめ細かい権限管理
ODCはRBACモデルに基づき、きめ細かい権限管理を完全に実装しています。管理者はユーザー権限モジュールでロールとそのロールが持つ各種権限をカスタマイズし、ユーザーに異なるロールを付与することで、ユーザーの権限範囲を制御できます。操作手順は以下のとおりです:
Web版ODCにログインします。
左側のナビゲーションペインで、ユーザー権限 > 役割 > 新規作成 をクリックします。
新規ロールページで、必要に応じて対応する設定と権限情報を入力します。詳細な設定情報については、ユーザーとロールをご参照ください。

実務経験に基づくSQL開発ルール
SQL開発ルールについて説明する前に、まずODC V4.2.0で導入された別の概念である「環境」について紹介します。ODCで管理されるデータベースはすべて、対応する環境が割り当てられます。現在、開発、テスト、本番の3種類の環境をサポートしており、これらの環境ごとにカスタマイズ可能なSQL開発ルールが設定されています。任意のユーザーが特定の環境のデータベースに変更を加える場合、その環境に対応するSQL開発ルールの管理を受けます。例えば、DBAが本番環境ではSQLウィンドウでdrop databaseのような高リスクなステートメントを実行することは許可されないと判断した場合、本番環境のSQL開発ルールにこのルールを設定することができます。そうすれば、本番環境のすべてのデータベースは、意図的または無意識的な削除から守られることになります。
SQL開発ルールは、SQLチェック規範とSQLウィンドウ規範の2種類に分類されます。
SQLチェック規範
SQLチェックルールは、SQLステートメントの規範性を定義します。例えば、一般的に本番データベースでselect *のようなステートメントを実行することは許可されません。これは、データベースのパフォーマンスに影響を与える可能性があるためです。そのため、本番環境のSQLチェック規範でこのルールの改善レベルを「必須改善」に設定することができます。そうすると、任意のユーザーはODC上でどのような方法を使ってもselect *ステートメントを実行できなくなります。ODCでは、改善不要、承認が必要、必須改善の3つの改善レベルが設定されています。確認方法は以下のとおりです:
Web版ODCにログインします。
左側のナビゲーションペインで、セキュリティ > 環境 > SQLチェック規範 をクリックします。
SQLチェック規範タブで、現在設定可能なすべてのSQLチェック規範を確認できます。

SQLウィンドウ規範
SQLウィンドウ規範は、ユーザーがSQLウィンドウ内で実行できる操作を定義します。例えば、SQLウィンドウ内でユーザーが実行できるSQLタイプを定義することができます。このタイプのホワイトリストに含まれないSQLは実行が禁止され、ユーザーはデータベース変更チケットを提出する必要があります。確認方法は以下のとおりです:
Web版ODCにログインします。
左側のナビゲーションペインで、セキュリティ > 環境 > SQLウィンドウ規範 をクリックします。
SQLウィンドウ規範タブで、現在設定可能なすべてのSQLウィンドウ規範を確認できます。

データベース変更のチケットを提出する場合は、プロジェクトにアクセスした後、チケット > 新規チケット > データベースの変更 をクリックして提出できます。

複数条件によるリスクレベルの設定
ODC V4.2.0では、ユーザーはリスクレベルの識別ルールをカスタマイズでき、異なるリスクレベルに対して柔軟に異なる承認フローを設定することで、グローバルかつきめ細かい管理を実現できます。例えば、本番環境でのデータエクスポートは高リスク操作と見なされ、プロジェクトDBAおよびプロジェクトOwnerの承認が必要です。一方、データベース名がdev_で始まる変更は低リスクと見なされ、承認フローを簡略化し、DBAの承認または自動承認のみで済む場合があります。「ルールツリー」ベースのインタラクションにより、DBAはこれらのリスク識別ルールを非常に便利かつ柔軟に設定できます。
Web版ODCにログインします。
左側のナビゲーションペインで、セキュリティ > リスクレベル > ルールを新規作成 をクリックします。
リスクレベルタブで、異なるリスクに対する承認プロセスを設定します。設定の詳細については、リスクレベル、リスク識別ルール、承認プロセスをご参照ください。

ODCには、デフォルトリスク、低リスク、中リスク、高リスクの4種類のリスクレベルが組み込まれています。各リスクレベルには、独自のリスク識別ルールと承認プロセスを設定できます。承認プロセスでは承認ノードの柔軟な設定もサポートしており、プロジェクトDBA、プロジェクトOwner、プロジェクトDeveloper、または自動承認を選択できます。
Web版ODCにログインします。
左側のナビゲーションペインで、セキュリティ > リスクレベル > 承認プロセス右側の 編集 > ドロップダウンで 承認プロセスの管理 を選択します。
承認プロセスの管理タブでは、新しい承認プロセスを作成したり、既存の承認プロセスを管理したりできます。

安定的な変更
上記の協働と管理機能に加え、ODCはデータライフサイクル管理、パーティション計画、SQL計画、通常のデータ変更、ロックフリー構造変更など、一連の重要な機能もサポートしており、さまざまなビジネスシナリオを支えます。