今日はなにの日。

気になったこと勉強になったことのメモ。

今日は、DBSに向けたRDSまとめ日。

目次

とある日

AWS DBSの勉強用の記録。

RDSのキーワードを調べてまとめる。

IAM データベース認証

概要

AWS Identity and Access Management (IAM) データベース認証を使用して、DB インスタンスを認証できます。IAM データベース認証には、MySQL および PostgreSQL を使用します。この認証方法では、DB インスタンスに接続するときにパスワードを使用する必要はありません。代わりに、認証トークンを使用します。

Amazon RDS でのデータベース認証 - Amazon Relational Database Service

認証トーク

認証トークンは、Amazon RDS がリクエストに応じて生成する一意の文字列です。認証トークンは、AWS 署名バージョン 4 を使用して生成されます。各トークンには 15 分の有効期間があります。認証は IAM を使用して外部的に管理されるため、ユーザー認証情報をデータベースに保存する必要はありません。引き続きスタンダードのデータベース認証を使用することもできます。トークンは認証にのみ使用され、確立後のセッションには影響しません。

MariaDB、MySQL、および PostgreSQL の IAM データベース認証 - Amazon Relational Database Service

制限

  • DB インスタンスの 1 秒あたりの最大接続数は、DB インスタンスクラスとワークロードに応じて制限される場合があります。

  • 現在、IAM データベース認証はすべてのグローバル条件コンテキストキーをサポートしていません。

    グローバル条件コンテキストキーの詳細については、「IAM ユーザーガイド」の「AWS グローバル条件コンテキストキー」を参照してください。

  • 現在、CNAME では IAM データベース認証はサポートされていません。

  • PostgreSQL の場合、IAM ロール (rds_iam) がマスターユーザーに追加されると、IAM 認証はパスワード認証よりも優先されるため、マスターユーザーは IAM ユーザーとしてログインする必要があります。

手順

  1. RDS DB インスタンスで IAM DB 認証を有効にする。
  2. IAM ユーザーを作成し、データベースユーザーを IAM ロールにマッピングする IAM ポリシーをアタッチする。
  3. IAM ロールを EC2 インスタンスにアタッチする。
  4. AWS 認証トークンを生成して、IAM ロールを識別します。
  5. SSL ルート証明書ファイルまたは証明書バンドルファイルをダウンロードする。
  6. IAM ロール認証情報と認証トークンまたは SSL 証明書を使用して RDS DB インスタンスに接続します。

IAM 認証を使用して RDS PostgreSQL インスタンスに接続する

ユーザーが IAM 認証情報で Amazon RDS に接続できるようにする

対応バージョン

  • MariaDB 10.6、すべてのマイナーバージョン
  • MySQL 8.0、マイナーバージョン 8.0.16 以降。
  • MySQL 5.7、マイナーバージョン 5.7.16 以降
  • MySQL 5.6、マイナーバージョン 5.6.34 以降
  • PostgreSQL 14、13、12、11 の、すべてのマイナーバージョン
  • PostgreSQL 10、マイナーバージョン 10.6 以降
  • PostgreSQL 9.6、マイナーバージョン 9.6.11 以降
  • PostgreSQL 9.5、マイナーバージョン 9.5.15 以降

監査ログ

SQL Server

Amazon RDS では、組み込みの SQL Server 監査メカニズムを使用して、Microsoft SQL Server データベースを監査することができます。監査と監査の仕様は、オンプレミスのデータベースサーバー用にそれらを作成するのと同じ方法で作成することができます。

SQL Server Audit - Amazon Relational Database Service

手順

SQL Server 監査を有効にするには、DB インスタンスでオプションを有効にすることと、SQL Server 内の機能を有効にすることの 2 つのステップを行う必要があります。SQL Server Audit オプションを DB インスタンスに追加するプロセスは次のとおりです。

  1. 新しいオプショングループを作成するか、既存のオプショングループをコピーまたは変更します。
  2. すべての必須オプションを追加して構成します。
  3. オプショングループを DB インスタンスに関連付けます。

MySQLMariaDB

Amazon RDS では、MySQL データベースインスタンスでの MariaDB 監査プラグインの使用をサポートしています。MariaDB 監査プラグインは、データベースへのユーザーのログオンやデータベースに対して実行されたクエリなどのデータベースアクティビティを記録します。データベースのアクティビティのレコードはログファイルに保存されます。

MariaDB 監査プラグインのサポート - Amazon Relational Database Service

手順

  1. 使用するオプショングループを決定します。新しいオプショングループを作成することも、既存のオプショングループを使用することもできます。既存のオプショングループを使用する場合は、次のステップは飛ばしてください。それ以外の場合は、カスタム DB オプショングループを作成します。[エンジン] で [mysql] を選択し、[メジャーエンジンのバージョン] で [5.6] または [5.7] を選択します。詳細については、「オプショングループを作成する」を参照してください。
  2. オプショングループに [MARIADB_AUDIT_PLUGIN] オプションを追加し、オプションを設定します。オプションの追加方法の詳細については、「オプショングループにオプションを追加する」を参照してください。各設定の詳細については、「監査プラグインのオプション設定」を参照してください。
  3. 新規または既存の DB インスタンスに、DB オプショングループを適用します。

Oracle

提供される Oracle の監査ファイルは、スタンダードの Oracle 監査ファイルです。Amazon RDS は、Oracle のきめ細かな監査 (FGA) 機能をサポートしています。ただし、ログアクセスは、SYS.FGA_LOG$ テーブルに保存された FGA イベントと DBA_FGA_AUDIT_TRAIL ビューからアクセス可能な FGA イベントへのアクセスを提供しません。

Oracle Database のログファイル - Amazon Relational Database Service

[Oracle 初心者向け] 監査ログを CloudWatch Logs に出力する設定だけでは ログインの成功・失敗のログは取得できなかった… | DevelopersIO

メンテナンスウィンドウ

Amazon RDS では、Amazon RDS リソースのメンテナンスを定期的に実行します。通常、メンテナンスには DB インスタンスの基盤となるオペレーティングシステム (OS) やデータベースエンジンのバージョンの更新が伴います。通常、オペレーティングシステムの更新はセキュリティの問題に関連しているため、できるだけ早急に適用する必要があります。

DB インスタンスのメンテナンス - Amazon Relational Database Service

マルチ AZ 配置のメンテナンス

DB インスタンスをマルチ AZ 配置として実行すると、Amazon RDS で次のステップに従ってオペレーティングシステムの更新が実行されるため、メンテナンスイベントの影響をさらに軽減できます。

  1. スタンバイに対してメンテナンスを実行する。
  2. スタンバイをプライマリに昇格させる。
  3. 旧プライマリでメンテナンスを実行し、その旧プライマリが新しいスタンバイになる。

マルチ AZ 配置で DB インスタンスのデータベースエンジンを変更する場合、Amazon RDS は、プライマリおよびセカンダリ DB インスタンスを両方同時にアップグレードします。この場合、マルチ AZ 配置全体のデータベースエンジンがアップグレード時にシャットダウンされます。

モニタリング

モニタリングは、Amazon RDS と AWS ソリューションの信頼性、可用性、パフォーマンスを維持する上で重要な部分です。マルチポイント障害をより簡単にデバッグするには、AWS ソリューションのすべての部分からモニタリングデータを収集することをお勧めします。

Amazon RDS のメトリクスのモニタリングの概要 - Amazon Relational Database Service

パフォーマンスガイドライン

  • CPU または RAM の高消費量 - CPU または RAM の消費量が大きい値になっていても、それは妥当である場合があります。ただし、アプリケーションの目標 (スループット、同時実行数など) に沿った想定値であることが前提です。
  • ディスクスペースの消費量 - 使用されているディスクスペースが一貫して合計ディスクスペースの 85% 以上である場合は、ディスクスペースの消費量を調べます。インスタンスからデータを削除するか、別のシステムにデータをアーカイブして、スペースを解放できるかどうかを確認します。
  • ネットワークトラフィック - ネットワークトラフィックについてシステム管理者に問い合わせて、ドメインネットワークとインターネット接続に対する想定スループットを把握します。スループットが一貫して想定よりも低い場合は、ネットワークトラフィックを調べます。
  • データベース接続数 - ユーザー接続数が多いことが、インスタンスのパフォーマンスが下がっていること、応答時間が長くなっていることに関連しているとわかった場合、データベース接続数を制限することを検討します。DB インスタンスの最適なユーザー接続数は、インスタンスのクラスと実行中のオペレーションの複雑さによって異なります。データベース接続数を確認するには、User Connections パラメータが 0 (無制限) 以外の値に設定されているパラメータグループと DB インスタンスを関連付けます。既存のパラメータグループを使用するか、新しいパラメータグループを作成できます。詳細については、「パラメータグループを使用する」を参照してください。
  • IOPS メトリクス - IOPS メトリクスの想定値はディスクの仕様とサーバーの設定によって異なるため、ベースラインを使用して一般的な値を把握します。値とベースラインとの差が一貫しているかどうかを調べます。最適な IOPS パフォーマンスを得るには、読み取りおよび書き込みオペレーションが最小限になるように、一般的な作業セットがメモリに収まることを確認してください。

Performance Insights

Performance Insights は、既存の Amazon RDS モニタリング機能を拡張して、データベースのパフォーマンスを明確にし、これに影響を与えるあらゆる問題を分析しやすくします。Performance Insights ダッシュボードを使用してデータベースロードを視覚化したり、ロードを待機、SQL ステートメント、ホスト、ユーザー別にフィルタリングしたりできます。

Performance Insights(RDSのパフォーマンスを分析、チューニング)| AWS

Amazon RDS での Performance Insights を使用したDB 負荷のモニタリング - Amazon Relational Database Service

拡張モニタリング

Enhanced Monitoring を使用すると、DB インスタンスオペレーティングシステムをリアルタイムでモニタリングできます。さまざまなプロセスまたはスレッドが CPU をどのように使用しているかを確認するには、Enhanced Monitoring メトリクスが役立ちます。

対応バージョン

拡張モニタリングは、次のデータベースエンジンに使用できます。

拡張モニタリングは、db.m1.small インスタンスクラスを除くすべての DB インスタンスクラスで使用できます。

CloudWatch と拡張モニタリングのメトリクスの相違点

ハイパーバイザーは、仮想マシン (VM) を作成して実行します。ハイパーバイザーを使用すると、メモリと CPU を仮想的に共有することで、1 つのインスタンスで複数のゲスト VM をサポートできます。CloudWatch は DB インスタンスのハイパーバイザーから CPU 使用率のメトリクスを収集します。対照的に、Enhanced Monitoring は DB インスタンス上のエージェントからメトリクスを収集します。

ハイパーバイザーレイヤーで少量の処理が実行されるため、CloudWatch と Enhanced Monitoring 測定値の間に違いが見つかることがあります。DB インスタンスがより小さなインスタンスクラスを使用している場合、その違いはより大きくなる可能性があります。このシナリオでは、1 つの物理インスタンス上のハイパーバイザー層によってより多くの仮想マシン (VM) が管理されている可能性があります。

拡張モニタリングのコスト

拡張モニタリングのメトリクスは、CloudWatch メトリクスではなく CloudWatch Logs に保存されます。拡張モニタリングのコストは次の要因によって異なります。

  • 拡張モニタリングの料金は、Amazon CloudWatch Logs に示された無料利用枠を超えた場合にのみ課金されます。CloudWatch Logs のデータ転送料金とストレージ料金に基づいて料金が決まります。
  • RDS インスタンスに対して転送される情報の量は、拡張モニタリング機能に対して定義された詳細度に正比例します。モニタリング間隔を短くすると、OS メトリクスのレポート回数が増え、モニタリングコストが高くなります。コストを管理するには、アカウント内のインスタンスごとに異なる詳細度を設定します。
  • 拡張モニタリングの使用コストは、拡張モニタリングが有効になっている各 DB インスタンスに適用されます。多数の DB インスタンスをモニタリングすると、少数の DB インスタンスをモニタリングするよりもコストが高くなります。
  • 複数のコンピューティング集中型のワークロードをサポートする DB インスタンスでは、レポートする OS プロセスアクティビティが増え、拡張モニタリングのコストがより高くなります。

イベント通知

Amazon RDS では、Amazon RDS のイベントが発生したときに、Amazon Simple Notification Service (Amazon SNS) を使用して通知を送信します。これらの通知については、AWS リージョンの Amazon SNS でサポートされているすべての通知の形式が使用可能です (E メール、テキストメッセージ、HTTP エンドポイントの呼び出しなど)。

Amazon RDS イベント通知の使用 - Amazon Relational Database Service

イベントサブスクリプションの対象となる RDS リソース

  • DB インスタンス
  • DB スナップショット
  • DB パラメータグループ
  • DB セキュリティグループ
  • RDS プロキシ

手順

  1. Amazon RDS コンソール、AWS CLI、または API を使用して、Amazon RDS イベント通知サブスクリプションを作成します。

    Amazon RDS では、Amazon SNS トピックの ARN を使用して各サブスクリプションを識別します。Amazon RDS コンソールでは、サブスクリプションの作成時に ARN が作成されます。Amazon SNS コンソール、AWS CLI、または Amazon SNS API を使用して ARN を作成します。

  2. サブスクリプションの作成で指定したアドレス宛てに、Amazon RDS から承認の E メールまたは SMS メッセージが送信されます。サブスクリプションを確認するには、送信された通知に記載されているリンクを選択します。

  3. サブスクリプションを確認すると、Amazon RDS コンソールの [My Event Subscriptions] セクションで、サブスクリプションのステータスが更新されます。

  4. その後、イベント通知を受け取り始めます。

イベントカテゴリとイベントメッセージ

Amazon RDS では、多数のイベントがカテゴリ分けされて生成され、これらには Amazon RDS コンソール、AWS CLI、または API を使用してのサブスクライブが可能です。各カテゴリは、ソースタイプに適用されます。

Amazon RDS のイベントカテゴリとイベントメッセージ - Amazon Relational Database Service

トピック