拡張モニタリングの設定と有効化
拡張モニタリングを使用するには、IAM ロールを作成し、拡張モニタリングを有効にする必要があります。
拡張モニタリング用の IAM ロールの作成
拡張モニタリングには、CloudWatch Logs に OS メトリクスの情報を送るためのアクセス権限が必要です。AWS Identity and Access Management (IAM) ロールを使用して、Enhanced Monitoring に必要なアクセス許可を付与します。このロールは、拡張モニタリングを有効にする際に作成することも、事前に作成しておくこともできます。
拡張モニタリングを有効にしたときの IAM ロールの作成
RDS コンソールで拡張モニタリングを有効にすると、Amazon RDS は必要な IAM ロールを作成できます。ロールの名前は rds-monitoring-role
です。RDS は、指定済み DB インスタンス、リードレプリカ、またはマルチ AZ DB クラスターに対してこのロールを使用します。
拡張モニタリングを有効にするときに、IAM ロールを作成するには
-
拡張モニタリングのオンとオフを切り替える の手順を行います。
-
ロールを選択する手順で、[モニタリングロール] を [デフォルト] に設定します。
拡張モニタリングを有効にする前の IAM ロールの作成
拡張モニタリングを有効にする前に、必要なロールを作成できます。拡張モニタリングを有効にする場合は、新しいロールの名前を指定します。AWS CLI または RDS API を使用して拡張モニタリングを有効にする場合は、この必要なロールを作成する必要があります。
拡張モニタリングを有効にするユーザーには、PassRole
アクセス許可を付与する必要があります。詳細については、IAM ユーザーガイドの「AWS サービスにロールを渡すアクセス許可をユーザーに許可する」の「例 2」を参照してください。
Amazon RDS 拡張モニタリング用の IAM ロールを作成するには
-
IAM コンソール
(https://console.aws.amazon.com ) を開きます。 -
ナビゲーションペインで [ロール] を選択します。
-
[ロールの作成] を選択します。
-
[AWS のサービス] タブを選択し、サービスのリストから [RDS] を選択します。
-
[RDS - Enhanced Monitoring] (RDS - 拡張モニタリング)、[Next] (次へ) の順に選択します。
-
[Permissions policies] (アクセス許可ポリシー) に [AmazonRDSEnhancedMonitoringRole] が表示されていることを確認し、[Next] (次へ) を選択します。
-
[ロール名] に、ロールの名前を入力します。例えば、「
emaccess
」と入力します。ロールの信頼されたエンティティは、AWS サービスmonitoring.rds.amazonaws.com です。
-
[ロールの作成] を選択します。
拡張モニタリングのオンとオフを切り替える
AWS Management Console、AWS CLI、または RDS API を使用して拡張モニタリングを管理できます。DB クラスターごとに、メトリクス収集の詳細度を別々に設定できます。コンソールから既存の DB クラスターの拡張モニタリングを切り替えることもできます。
DB クラスターもしくはリードレプリカの作成時、または DB クラスターの変更時に、拡張モニタリングをオンにすることができます。拡張モニタリングをオンにするように DB インスタンスまたはクラスターを変更した場合は、変更を有効にするために DB インスタンスを再起動する必要はありません。
RDS コンソールの [データベース] ページで、次のいずれかのアクションを行ううと、拡張モニタリングをオンにすることができます。
-
DB クラスターを作成する – [データベースを作成] を選択します。
-
[リードレプリカの作成] – [アクション]、[リードレプリカの作成] の順にクリックします。
-
[DB インスタンスまたは DB クラスターを変更する] – [変更] を選択します。
注記
DB クラスターの拡張モニタリングを有効にすると、クラスター内の個々の DB インスタンスの拡張モニタリングを管理することはできません。
DB クラスター内の個々の DB インスタンスの拡張モニタリングを管理していて、詳細度がインスタンスごとに異なる値に設定されている場合、DB クラスターは拡張モニタリングに関して異種となります。このような場合、DB クラスターを変更してクラスターレベルで拡張モニタリングを管理することはできません。
RDS コンソールで拡張モニタリングのオンとオフを切り替えるには
-
[その他の設定] までスクロールします。
-
[モニタリング] で、DB クラスター、またはリードレプリカに対し、[拡張モニタリングを有効にする] をクリックします。クラスターレベルで拡張モニタリングを有効にすると、クラスターレベルで拡張モニタリングの設定とオプションを管理できます。クラスターレベルの設定は、クラスター内のすべての DB インスタンスに適用されます。クラスターレベルで拡張モニタリングを無効にするには、オプションの選択を解除します。クラスター内の個々の DB インスタンスの拡張モニタリング設定を変更できます。
[データベースの作成] ページで、クラスターレベルで拡張モニタリングを有効にするように選択できます。
クラスターの作成中に拡張モニタリングを有効にしない場合、[DB クラスターの変更] ページでクラスターを変更できます。
注記
クラスターレベルで管理されている拡張モニタリングが既にある DB クラスター内の個々の DB インスタンスの拡張モニタリングを管理することはできません。
-
クラスターが拡張モニタリングに関して異種である場合、クラスターレベルで拡張モニタリングを管理することはできません。クラスターレベルで拡張モニタリングを管理するには、インスタンスごとに拡張モニタリング設定を変更して一致させます。これで、クラスターを変更するときに、クラスターレベルで拡張モニタリングを管理できるようになります。
-
[ロールの作成] プロパティで、Amazon CloudWatch Logs との通信を Amazon RDS に許可するために作成した IAM ロールに設定するか、[デフォルト] を選択して、RDS によって
rds-monitoring-role
という名前でロールが作成されるようにします。 -
[詳細度] プロパティを、DB インスタンス、DB クラスター、またはリードレプリカのメトリクスが収集される間隔 (秒単位) に設定します。[詳細度] プロパティは、
1
、5
、10
、15
、30
、60
のいずれかの値に設定できます。RDS コンソールは最速で 5 秒ごとに更新されます。RDS コンソールで詳細度を 1 秒に設定しても、メトリクスはやはり 5 秒ごとに更新されます。1 秒ごとにメトリクスの更新を取得するには、CloudWatch Logs を使用します。
AWS CLI を使用して拡張モニタリングをオンにするには、次のコマンドで --monitoring-interval
オプションを 0
以外の値に設定し、--monitoring-role-arn
オプションを 拡張モニタリング用の IAM ロールの作成 で作成したロールに設定します。
--monitoring-interval
オプションにより、拡張モニタリングのメトリクスが収集される時間点の間隔 (秒単位) が指定されます。オプションの有効な値は、0
、1
、5
、10
、15
、30
、および 60
です。
AWS CLI を使用して拡張モニタリングをオフにするには、これらのコマンドで --monitoring-interval
オプションを 0
に設定します。
例
次の例では、DB インスタンスの拡張モニタリングをオンに切り替えています。
Linux、macOS、Unix の場合:
aws rds modify-db-instance \ --db-instance-identifier
mydbinstance
\ --monitoring-interval30
\ --monitoring-role-arnarn:aws:iam::123456789012:role/emaccess
Windows の場合:
aws rds modify-db-instance ^ --db-instance-identifier
mydbinstance
^ --monitoring-interval30
^ --monitoring-role-arnarn:aws:iam::123456789012:role/emaccess
例
次の例では、DB クラスターの拡張モニタリングをオンに切り替えています。
Linux、macOS、Unix の場合:
aws rds modify-db-cluster \ --db-cluster-identifier
mydbinstance
\ --monitoring-interval30
\ --monitoring-role-arnarn:aws:iam::123456789012:role/emaccess
Windows の場合:
aws rds modify-db-cluster ^ --db-cluster-identifier
mydbinstance
^ --monitoring-interval30
^ --monitoring-role-arnarn:aws:iam::123456789012:role/emaccess
例
次の例では、マルチ AZ DB クラスターの拡張モニタリングをオンに切り替えています。
Linux、macOS、Unix の場合:
aws rds modify-db-cluster \ --db-cluster-identifier
mydbcluster
\ --monitoring-interval30
\ --monitoring-role-arnarn:aws:iam::123456789012:role/emaccess
Windows の場合:
aws rds modify-db-cluster ^ --db-cluster-identifier
mydbcluster
^ --monitoring-interval30
^ --monitoring-role-arnarn:aws:iam::123456789012:role/emaccess
RDS API を使用して拡張モニタリングをオンにするには、MonitoringInterval
パラメータに 0
以外の値を設定し、MonitoringRoleArn
パラメータを 拡張モニタリング用の IAM ロールの作成 で作成したロールに設定します。次のアクションでこれらのパラメータを設定します。
MonitoringInterval
パラメータにより、拡張モニタリングのメトリクスが収集される時間点の間隔 (秒単位) が指定されます。有効な値は、0
、1
、5
、10
、15
、30
、60
です。
RDS API を使用して拡張モニタリングをオフにするには、MonitoringInterval
に 0
を設定します。
「混乱した代理」問題からの保護
混乱した代理問題は、アクションを実行する許可を持たないエンティティが、より特権のあるエンティティにアクションを実行するように強制できるセキュリティの問題です。AWS では、サービス間でのなりすましによって、混乱した代理問題が発生する場合があります。サービス間でのなりすましは、1 つのサービス (呼び出し元サービス) が、別のサービス (呼び出し対象サービス) を呼び出すときに発生する可能性があります。呼び出し元サービスは、本来ならアクセスすることが許可されるべきではない方法でその許可を使用して、別のお客様のリソースに対する処理を実行するように操作される場合があります。これを防ぐため、AWS では、アカウントのリソースへのアクセス権が付与されたサービスプリンシパルで、すべてのサービスのデータを保護するために役立つツールを提供しています。詳細については、「「混乱した代理」問題」を参照してください。
リソースに関して、Amazon RDS から別のサービスに付与できるアクセス許可を制限する場合は、拡張モニタリングロール用の信頼ポリシー内で、aws:SourceArn
および aws:SourceAccount
のグローバル条件コンテキストキーを使用することをお勧めします。これら両方のグローバル条件コンテキストキーを使用する場合、アカウント ID は同じものを使用する必要があります。
混乱した代理問題から保護するための最も効果的な方法は、リソースの完全な ARN を指定して aws:SourceArn
グローバル条件コンテキストキーを使用することです。Amazon RDS の場合は、aws:SourceArn
に arn:aws:rds:
を設定します。Region
:my-account-id
:db:dbname
次の例では、「混乱した代理」問題を防ぐために、信頼ポリシー内で aws:SourceArn
および aws:SourceAccount
のグローバル条件コンテキストを使用しています。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "monitoring.rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:rds:
Region
:my-account-id
:db:dbname
" }, "StringEquals": { "aws:SourceAccount": "my-account-id
" } } } ] }