ソフトウェアプロジェクトのデータベースアクセス制御の管理にクラウドを使用した経験

AplanのシニアソフトウェアエンジニアであるNikolai Sinitsinに、この記事の執筆に協力してくれた記事を準備してくれたことに非常に感謝しています。 Azure関連の残りの記事はazureweekタグにあります。


こんにちは

プロジェクトの1つでタスクを設定しました。その条件は、ソフトウェアがアクセス制御を使用してさまざまなデータベースにアクセスする必要があることを確認することでした。 さらに、別のデータベースへの接続を変更できるようにする必要があったため、ソフトウェアはアドレスが変更されたことを認識していました。 これを行うにはいくつかの方法が見つかりましたが、最終的には、Azureクラウドサービスを使用するオプションを決定しました。



最初は明白な道をたどることを考えました。データベースがあり、「ライセンス」を持つユーザーが各データベースにセットアップされています。 彼らはアクセスの問題を解決しましたが、おそらくご存知のように、そのようなシステムを管理することは非常に不便です-ユーザーの追加、削除。 サーバーを変更する問題を解決するには、アクセス権を持つユーザーを保存する条件付きサービスを作成する必要があります。 そして、誰もがデータベースサーバーのあるアドレスを知っているでしょう。



この方法には、いくつかの欠点があります。



マイナスを見ていきましょう。



マイナス: サービスを記述する必要があります



「どのようなサービスが必要でしたか」とあなたは尋ねます。 さまざまなマシンに展開されたソフトウェア製品のデータベースへのアクセス制御を管理するサービス。 サービスの作成は悪くありません。 ただし、サービスを最初から記述する必要がある場合は、次のようなさまざまなエラーをキャッチできます。 最も複雑なのは人間です。 これは、アクセス制御およびロール配布サービスを作成する場合に特に当てはまります。 1つの間違い-そして、1人のユーザーにリソースへの権利を与える代わりに、多数の権利が与えられていることに気付くかもしれません。 エラーの価格は非常に高くなります。



マイナス: システムにアクセスできるユーザーの単一のリポジトリはありません



異なるアクセスを提供できるサービスが必要であるという事実に加えて、単一のユーザーデータベースと、このデータベースを簡単に管理できる管理マネージャーが必要です。 最初から自分自身を書くこと=多くの時間を費やす。



マイナス: さまざまなデータベースでユーザーデータの関連性を維持することは困難です。



ユーザーが各データベースにログオンするオプションを使用すると、複数のデータベースを相互に同期する問題が発生します。



説明されている問題があるという事実により、タスクを解決し、上記の欠点を最小限に抑えるか完全に取り除くクラウドサービスを検討することに決めました+クラウドデータベースへの移行とクラウドでのサイト展開の可能性がありました。







問題を解決するために分析および使用されたクラウドサービスを簡単に検討してください。



Azure Active Directory AAD または Azure AD は、マルチテナントクラウドディレクトリおよびID管理サービスです。 これは、Windows Serverに付属しているActive Directoryでの作業に似ています。 ただし、AADはユーザーが会社のローカルインフラストラクチャで作業することを目的としていませんが、クラウドアプリケーション(Azure Key Vaultなど)を使用する場合、「システムにアクセスできる単一のユーザーリポジトリがない」および「ユーザーのデータを保持するのが難しい」という問題を解決しますさまざまなデータベースで。」 最近、AADがドメインを展開する機能をサポートすることが発表されました。



Azure Key Vault - HMS as a Serviceハードウェアセキュリティモジュール )。 HMSは専用のハードウェアであり、キー/シークレットの保存、管理、暗号化/復号化、署名の設定/検証を最も安全な方法で十分に高速に行うことができます(暗号化のために研ぎ澄まされた特定のハードウェアは、アプリケーションに応じて迅速に機能しますが、測定の数または数は、情報なし)。 KVは、以前はBYOK(bring-your-own-key)として知られていました。 ( 記事へのリンク )。 このサービスを使用すると、特定のデータベースへのアクセスに関連するシークレット(ログイン、パスワード、アドレス、データベースのタイプなど)を保存できます。したがって、AADを使用して承認されたユーザーは、シークレットへのアクセスを利用してトークンを受け取ります。 そして、このデータに基づいて、プログラムは目的のデータベースに接続します。







Azure Active DirectoryとAzure Key Vaultの使用



上の図は、アクセス制御、単一のユーザーリポジトリ、および管理マネージャーが、AADやAzure Key Vaultなどのクラウドサービスの側に転送されることを示しています。 相互作用スキームは非常に単純です。 各ソフトウェアユーザーは、サービス管理者から与えられたユーザー名とパスワードを知っています。 これにより、プログラムはAADにログインし、認証トークンを受け取ります。認証トークンを介して、ソフトウェア製品はシークレットが保存されているAzure Key Vaultサービスにアクセスします。 さらに秘密を使用して、ソフトウェアはデータベースへの接続を確立します。



データベースへのアクセスを削除する必要がある場合は、AADからユーザーを削除し、データベースへの新しいパスワードを生成できます。 接続を失った残りのシステムは、再びシークレットを要求し、接続を確立します。

データベースのアドレスまたは場所を変更する場合、情報を秘密に変更するだけで、システムは自動的にKey Vaultからの情報に含まれる別のデータベースに接続します。



このアプローチの利点:



マイナスのうち、1つを区別できます。この実装では、ユーザーを削除した後、データベースのパスワードを変更する必要があります。 システムはすでに使用されているため、これはあまり良くありません。



それは、特定の問題を解決するためにクラウドを使用した経験でした。 ご清聴ありがとうございました!



All Articles