データベースは極めて重要な資産であり、その運用保守のセキュリティ確保は最優先事項です。Bastionhost Enterprise Edition および SM Edition は、ApsaraDB for RDS (MySQL、SQL Server、PostgreSQL)、PolarDB (MySQL、PostgreSQL、Oracle 互換の PostgreSQL)、および自己管理データベース (MySQL、SQL Server、PostgreSQL、Oracle) の運用保守と監査をサポートしています。このトピックでは、具体的な例を用いて、Bastionhost を使用したデータベースの運用保守方法を説明します。
背景情報
企業は Windows サーバーや Linux サーバーに加えて、多数のデータベース資産を管理しています。中核的なビジネス資産として、データベースには機密情報が含まれています。データベースの運用保守を保護し、不正アクセスや非準拠のアクティビティを防ぐことは、あらゆる企業にとって主要な懸念事項です。
データベース環境は多様です。ApsaraDB for RDS などのクラウドネイティブデータベース、自己管理データベース、そして MySQL、SQL Server、PostgreSQL、Oracle などのさまざまなデータベースエンジンが含まれます。大企業では、これらのデータベースは、マルチアカウント、VPC、オンプレミスの IDC、または異種クラウドにまたがる複雑な環境に分散していることがよくあります。Bastionhost は、これらのハイブリッドシナリオの運用保守とコントロールを一元化し、セキュリティチームの管理を簡素化します。
Alibaba Cloud の Bastionhost Enterprise Edition および SM Edition は、Windows サーバー、Linux サーバー、およびデータベースの一元管理をサポートしています。これにより、詳細な権限を定義し、さまざまなデータベースタイプに対して事後監査を実行でき、データベース運用保守のセキュリティを最大限に高めることができます。また、Bastionhost は、マルチアカウント設定、オンプレミスの IDC、異種クラウドなどのハイブリッド環境の資産への統一されたアクセスを提供し、セキュリティチームが単一のプラットフォームからすべてのリソースを管理できるようにします。
Bastionhost Enterprise Edition および SM Edition は、信頼性の高いデュアルエンジン、アクティブ/アクティブアーキテクチャを使用しています。この設計により、要求の厳しいデータベース運用保守に対して高い可用性と安定性が保証されます。詳細については、「Bastionhost の各エディションの機能比較」をご参照ください。
運用保守ワークフロー
Bastionhost を使用してデータベースの運用保守を行う場合、まず管理者が資産を管理し、運用保守エンジニアに権限を付与します。その後、運用保守エンジニアはクライアントまたは運用保守ポータルを使用して Bastionhost への SSH トンネルを確立します。最後に、Bastionhost を介してデータベース資産にログインし、運用保守を実行します。
方法と手順
クライアントによる運用保守
事前準備
-
Bastionhost でデータベースとユーザーを作成し、そのユーザーに資産および資産アカウントへのアクセスを承認済みであること。詳細については、「データベースの作成」、「ユーザーの管理」、および「資産と資産アカウントの承認」をご参照ください。
以下の例では、MySQL データベースとローカルユーザーを使用します。
-
ローカルマシンに SSH トンネルをサポートするデータベースクライアントをインストール済みであること。クライアントツールとバージョンの推奨事項については、「リモート接続に推奨されるクライアントツールとバージョン」をご参照ください。
このガイドでは、Windows 上の Navicat Premium と Linux 上のコマンドラインを例として使用します。
ステップ 1:運用保守アドレスとトークンの取得
運用保守ポータルにログインします。詳細については、「運用保守ポータルへのログイン」をご参照ください。
左側のナビゲーションウィンドウで、[データベース] をクリックします。
-
データベース ページで、対象のデータベースを見つけます。リモート接続 列で、O&M トークンの表示 を ログイン方法 に設定し、ログイン をクリックします。
-
O&M トークン ダイアログボックスで、O&M トークンの申請 をクリックします。トークンの申請は初回ログイン時のみ必要です。
トークンが付与されると、ダイアログボックスには [クライアントデータベースの一般情報] (データベースアドレス、アカウント名、ポートを含む) と [クライアント SSH トンネル設定] (運用保守トークン、パブリックおよびプライベート運用保守アドレス、SSH: 60022 や RDP: 63389 などの Bastionhost 運用保守ポート、トークンの有効期限を含む) の 2 つのセクションが表示されます。運用保守トークンをコピーし、クライアントのパスワードフィールドに貼り付けます。有効期間を延長するには、[トークンを更新] をクリックします。
運用保守ポータルから運用保守トークンを取得する際に、現在のデータベースアカウントが Bastionhost によって管理されていない場合は、まず O&M トークン ダイアログボックスでデータベースアカウントの基本情報を設定する必要があります。データベースアカウントの作成方法の詳細については、「データベース管理」をご参照ください。
運用保守トークンは有効期間内に使用する必要があります。管理者は Bastionhost コンソールで有効期間を設定できます。運用保守の承認が有効になっている場合は、承認プロセス中に管理者が設定した有効期間が使用されます。
管理者が運用保守ユーザーに自身のトークンの更新を許可している場合、ユーザーはトークンが有効期限切れになる前に更新できます。トークンが有効期限切れになった後、ユーザーは新しいトークンをリクエストする必要があります。運用保守の承認が有効になっている場合、ユーザーはトークンを更新できません。トークン設定が変更された後、新しい設定を有効にするには、新しいトークンをリクエストするか、既存のトークンを更新する必要があります。
トークンが有効であるにもかかわらず運用保守接続に失敗する場合、同時運用保守接続数が上限に達している可能性があります。この場合、管理者に連絡して Bastionhost インスタンスのインスタンスタイプをスペックアップするか、アイドル接続を解放してください。もう一つの考えられる理由は、管理者がご利用の送信元 IP アドレスまたは現在の時間帯からの運用保守リクエストをブロックしていることです。この場合、管理者に連絡して制限を解除してもらってください。
監査ログには、クライアントで入力されたユーザー名や資産アカウントではなく、トークンをリクエストしたユーザーが記録されます。
ステップ 2:SSH トンネルの確立
以下のセクションでは、Navicat Premium ツールとコマンドラインターミナルを使用してデータベースの運用保守を行う方法について説明します。
Navicat Premium
-
Navicat Premium を開き、新しい MySQL 接続を作成します。
-
[SSH] タブで [SSH トンネル] を選択し、Bastionhost にログインするためのパラメーター (ステップ 1 で取得したクライアント SSH トンネル設定パラメーター) を設定します。
パラメーター
説明
ホスト
ステップ 1 の クライアント SSH トンネルの設定項目 セクションにある Bastionhost インスタンスのパブリックまたはプライベート運用保守アドレス。
ポート
Bastionhost の SSH 運用保守ポート。デフォルトは 60022 です。
ユーザー名
Bastionhost へのログインに使用するユーザー名。
パスワード
データベースの運用保守トークン。ステップ 1 の クライアント SSH トンネルの設定項目 セクションにある運用保守トークンを使用します。
-
[一般] タブで、データベース接続情報を設定します。
[ポート] を
3306に設定し、mysqltestのようなカスタムの接続名を指定します。パラメーター
説明
ホスト
データベース接続アドレス。
ユーザー名
データベースアカウントのログインユーザー名。
パスワード
-
管理者が Bastionhost にデータベースアカウントのパスワードをホストしている場合、パスワードフィールドは空のままにできます。
-
管理者がデータベースアカウントのパスワードをホストしていない場合、データベースアカウントのログインパスワードを入力します。
説明 パスワードを保存することを推奨します。パスワードを保存しない場合、データベース運用保守ツールからパスワードの入力を求められることがあります。その場合は、運用保守トークンを入力できます。 -
-
-
Navicat Premium で、新しく作成したデータベース接続をダブルクリックします。接続が成功すると、データベースの管理を開始できます。
コマンドライン
-
コマンドラインツールを開き、次のコマンドを実行します。
-
コマンドフォーマット:
ssh -N -L <localport>:<databaseAddress>:<databasePort> <bastionusername>@<bastionAddress> -p <bastionPort> -
パラメーター:
パラメーター
説明
localport
トンネル用のカスタムローカルポート。マシン上の既存のリッスンポートと競合しないようにしてください。
databaseAddress
データベース資産のアドレス。
databasePort
データベース資産のポート。
bastionusername
ご利用の Bastionhost ユーザー名。
bastionAddress
Bastionhost の運用保守アドレス。
bastionPort
Bastionhost の SSH 運用保守ポート。デフォルトは 60022 です。
-
例:
ssh -N -L 33061:rm-******m020h.mysql.rds.aliyuncs.com:3306 bastuser@******-public.bastionhost.aliyuncs.com -p 60022
-
-
パスワードの入力を求められたら、データベースの運用保守トークンを入力して Enter キーを押します。ターミナルは接続を待機します。
[root@xxx ~]# ssh -N -L 33061:rm-xxx0h.mysql.rds.aliyuncs.com:3306 doc01@uxxx-public.bastionhost.aliyuncs.com -p 60022 The authenticity of host '[uxxx-public.bastionhost.aliyuncs.com]:60022 ([xxx.7.15]:60022)' can't be established. RSA key fingerprint is SHA256:xxx. RSA key fingerprint is MD5:9x:xx:xx:xx:b0:56:0b:bb:58:e6:46:ec. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[uxxx.bastionhost.aliyuncs.com]:60022,[xxx.15]:60022' (RSA) to the list of known hosts. doc01@uxxx-public.bastionhost.aliyuncs.com's password: -
別のターミナルを開き、カスタムローカルポートがリッスンしていることを確認します。出力 LISTEN は、ポートがリッスンしていることを示します。
[root@iZtxxx:jwtg98zqZ ~]# ss -an | grep 33061 tcp LISTEN 0 128 127.0.0.1:33061 *:* tcp LISTEN 0 128 [::1]:33061 [::]:* -
次のコマンドを実行します。接続が成功すると、運用保守を実行できるようになります。
[root@iZ_xxx jwtg98zqZ lib]# mysql -h 127.0.0.1 -u roxxx -P 33061 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 3151064 Server version: 8.0.13 Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]>-
コマンドフォーマット
mysql -h 127.0.0.1 -u <accountname> -P <localport> -
パラメーター
-
accountnameはデータベースのログインユーザー名です。 -
localportは Bastionhost に接続する際に指定したカスタムローカルリッスンポートです。
-
-
Web 運用保守
Bastionhost では、運用保守ポータルまたは Web コンソールを通じてデータベースの運用保守を実行できます。以下の手順では、運用保守ポータルを例として使用します。
事前準備
Bastionhost でデータベースとユーザーを作成し、そのユーザーに資産および資産アカウントへのアクセスを承認済みであること。詳細については、「データベースの作成」、「ユーザーの管理」、および「資産と資産アカウントの承認」をご参照ください。
以下の例では、MySQL データベースとローカルユーザーを使用します。
手順
-
Bastionhost 運用保守ポータルにログインします。詳細については、「運用保守ポータルへのログイン」をご参照ください。
-
左側のナビゲーションウィンドウで、データベース をクリックします。
-
対象のデータベースを見つけます。リモート接続 列で、ログイン方法として Web リモート接続 を選択し、ログイン をクリックします。
表示されるログインダイアログボックスで、[データベースアカウント] に [root] を選択します。[デフォルトの方法として設定] チェックボックスを選択することもできます。
SSO 運用保守
運用保守エンジニアは、Web ページからシングルサインオンランチャーを使用して、ローカルクライアントを自動的に呼び出し、セッションを確立できます。これにより、クライアントを個別に設定する必要がなくなります。このガイドでは、Bastionhost 運用保守ポータルを使用して、MySQL データベースの SSO 運用保守を使用する方法を説明します。
事前準備
-
Bastionhost でデータベースとユーザーを作成し、そのユーザーに資産および資産アカウントへのアクセスを承認済みであること。詳細については、「データベースの作成」、「ユーザーの管理」、および「資産と資産アカウントの承認」をご参照ください。
以下の例では、MySQL データベースとローカルユーザーを使用します。
-
ローカルマシンにシングルサインオンランチャーでサポートされているクライアントをインストール済みであること。サポートされているクライアントのリストについては、「シングルサインオンランチャーでサポートされているクライアント」をご参照ください。
以下の手順では、Windows 上の DBeaver 23 を例として使用します。
ステップ 1:ポータルアドレスの取得
Bastionhost コンソールにログインします。上部のナビゲーションバーで、Bastionhost インスタンスが配置されているリージョンを選択します。
Bastionhost インスタンスのリストで、対象のインスタンスを見つけて 管理 をクリックします。
-
左側のナビゲーションウィンドウで、概要 をクリックして運用保守ポータルアドレスを取得します。
右側の [Bastionhost インスタンス情報] パネルで、[パブリック運用保守ポータルアドレス] と [プライベート運用保守ポータルアドレス] を確認できます。
ステップ 2:シングルサインオンランチャーのインストール
-
ブラウザに運用保守ポータルアドレスを入力します。
-
[Alibaba Cloud Bastionhost] ログインページで、Bastionhost のユーザー名とパスワードを入力し、[ログイン] をクリックします。
-
運用保守ポータルページで、Download Bastionhost Assistant をクリックします。
この例では、Windows 用のシングルサインオンランチャーを使用します。
-
ダウンロードが完了したら、ランチャーをインストールします。インストール後に開く必要はありません。
ステップ 3:運用保守ターミナルの設定
-
運用保守ポータルの左側のナビゲーションウィンドウで、デバイス設定 をクリックします。
-
[MySQL] タブで、DBeaver クライアントを選択し、保存 をクリックします。
-
表示される [usmsso.exe] ダイアログボックスで、[開く] をクリックし、画面の指示に従ってデータベースクライアントを設定します。
ステップ 4:データベースへの接続
-
運用保守ポータルの左側のナビゲーションウィンドウで、データベース をクリックします。
-
対象のデータベースを見つけます。リモート接続 列で、ドロップダウンリストから ローカルクライアント側のログイン を選択し、ログイン をクリックします。
データベースの O&M 監査
O&M エンジニアが Bastionhost を経由してデータベース資産にアクセスすると、すべての O&M アクティビティが監査されます。事後トレーサビリティを確保するため、Bastionhost はセッション監査、リアルタイムモニタリング、操作ログなどの機能を提供します。
Bastionhost コンソールにログインします。上部のナビゲーションバーで、ご利用の Bastionhost インスタンスが所在するリージョンを選択します。
Bastionhost インスタンスのリストで、ターゲットインスタンスを見つけ、管理 をクリックします。
左側のナビゲーションウィンドウで、 を選択します。
-
セッション監査 ページで、セッションレコードを表示します。