はじめに
AWSをはじめとしたクラウドサービスは、システム構築後に環境の見直しを行えることがメリットの1つとなります。
別の記事で、AWS環境の改善項目を確認できるTrusted Advisorについて説明し、コスト削減に使える項目を紹介しました。
本記事では、Trusted Advisorで確認できる項目のうち、パフォーマンス、セキュリティ、耐障害性、サービス制限、運用上の優秀性について紹介したいと思います。
本記事で記載している項目について
一部の項目では、AWS ConfigやSecurity Hubを有効化することで表示される項目があります。
取得したい情報が表示されていない場合、AWS ConfigやSecurity Hubを適切に設定してください。
本記事では、公式ドキュメントに記載されている項目を記載しています。
パフォーマンス
パフォーマンスの項目では、AWSサービスのパフォーマンスに影響する項目の情報を確認できます。
- Amazon DynamoDB Auto Scalingが有効化されていない
- Amazon EBS最適化が有効化されていない
- Amazon EBSプロビジョンドIOPS(SSD)ボリュームアタッチ設定
- Amazon EBSのプロビジョニング不足ボリューム
- Amazon EC2 Auto Scalingグループが起動テンプレートに関連付けられていない
- Amazon EC2からEBSスループット最適化
- EC2仮想化タイプが準仮想化
- Amazon ECSメモリのハード制限
- Amazon Route 53エイリアスリソースレコードセット
- AWS Lambdaメモリサイズのプロビジョニング不足関数
- 同時実行数の制限が設定されていないAWS Lambda関数
- パフォーマンスに関するAWS Well-Architectedのリスクの高い問題
- CloudFront代替ドメイン名
- コンテンツ配信の最適化(CloudFront)
- CloudFrontヘッダー転送とキャッシュヒット率
- 使用率の高いAmazon EC2インスタンス
- EC2セキュリティグループルールの増大
- 利用率が高すぎるAmazon EBSマグネティックボリューム
- Amazon EFSスループットモードの最適化
パフォーマンスの項目では、AWSサービスのパフォーマンスに影響がある項目を確認できます。
AWSを利用している中で、意図した通りの性能が出ない場合にパフォーマンスの項目を確認することで改善の参考にできます。
パフォーマンスの詳細については公式ドキュメントを確認してください。
セキュリティ
セキュリティの項目では、AWS環境のセキュリティを向上させるための情報を確認できます。
確認できる項目は以下となります。
- Amazon CloudWatchロググループの保持期間
- Microsoft SQL Serverを使用したAmazon EC2インスタンスのサポートの終了
- Microsoft Windows Serverを使用したAmazon EC2インスタンスのサポートの終了
- Amazon EBSパブリックスナップショット
- Amazon RDSパブリックスナップショット
- Amazon RDSセキュリティグループのアクセスリスク
- Amazon Route 53 MXリソースレコードセットとSender Policy Framework
- Amazon S3バケット許可
- DNS解決が無効になっているAmazon VPCピアリング接続
- リカバリポイントの削除を防ぐためのリソースベースのポリシーのないAWS Backupボールト
- AWS CloudTrailロギング
- 非推奨のランタイムを使用するAWS Lambda関数
- セキュリティに関するAWS Well-Architectedのリスクの高い問題
- IAM証明書ストアのCloudFront独自SSL証明書
- オリジンサーバーのCloudFront独自SSL証明書
- ELBリスナーのセキュリティ
- ELBセキュリティグループ
- 露出したアクセスキー
- IAMアクセスキーローテーション
- IAMパスワードポリシー
- IAMの使用
- ルートアカウントのMFA
- セキュリティグループ — 開かれたポート
- セキュリティグループ — 無制限アクセス
セキュリティの項目は、Security Hubと組み合わせることで多くの情報を確認できますが、標準でもセキュリティグループなどの状況を確認できます。
運用を続けていく中でAWSの設定変更が行われることも出てくると思います。意図した通りに設定されているのか、システム構築時だけではなく、運用が始まっているシステムに置いて確認することでセキュリティを高めることができます。
セキュリティの詳細については公式ドキュメントを確認してください。
耐障害性
耐障害性の項目では、AWS環境の可用性や冗長性を高めるための情報を確認できます。
確認できる項目は以下となります。
- Amazon Aurora MySQLクラスターでバックトラッキングが有効になっていない
- Amazon Auroraインスタンスアクセシビリティ
- Amazon CloudFrontのオリジンフェイルオーバー
- Amazon Comprehendエンドポイントアクセスリスク
- Amazon DynamoDBのポイントインタイムリカバリ
- Amazon DynamoDBテーブルはBackupプランに含まれていない
- Amazon EBSはAWS Backupプランに含まれていません
- Amazon EBSスナップショット
- Amazon EC2 Auto ScalingではELBヘルスチェックが有効になっていない
- Amazon EC2 Auto Scalingグループでキャパシティの再調整が有効
- Amazon EC2 Auto Scalingが複数のAZにデプロイされていないか、AZの最小数に達していない
- Amazon EC2アベイラビリティーゾーンのバランス
- Amazon EC2詳細モニタリングが有効化されていません
- 単一のAZを使用したAmazon ECSサービス
- Amazon ECSマルチAZ配置戦略
- Amazon EFSマウントターゲット冗長性なし
- Amazon EFSはAWS Backupプランに含まれていません
- Amazon ElastiCacheマルチAZクラスター
- Amazon ElastiCache Redisクラスターの自動バックアップ
- Amazon MemoryDBマルチAZクラスター
- Amazon MSKブローカーがホストするパーティションの数が多すぎる
- データノードが3つ未満のAmazon OpenSearch Serviceドメイン
- Amazon RDSバックアップ
- Amazon RDS DBインスタンス拡張モニタリングが有効化されていない
- Amazon RDS DiskQueueDepth
- Amazon RDS FreeStorageSpace
- Amazon RDS Multi-AZ
- Amazon RDSはAWS Backupプランに含まれていません
- RDS DBクラスターでマルチAZレプリケーションが有効になっていない
- RDSマルチAZスタンバイインスタンスが有効になっていない
- Amazon RDS ReplicaLag
- Amazon Redshiftクラスターの自動スナップショット
- 削除されたAmazon Route 53ヘルスチェック
- Amazon Route 53フェイルオーバーリソースレコードセット
- Amazon Route 53高TTLリソースレコードセット
- Amazon Route 53ネームサーバー権限移譲
- Amazon Route 53 Resolverエンドポイントのアベイラビリティーゾーンの冗長性
- Amazon S3バケットロギング
- Amazon S3バケットレプリケーションが有効になっていない
- Amazon S3バケットバージョニング
- Application、Network、Gateway Load Balancerが、複数のアベイラビリティーゾーンにまたがっていない
- サブネットで利用可能なIPの自動スケーリング
- Auto Scaling Groupヘルスチェック
- Auto Scalingグループリソース
- AWS CloudHSM単一のAZでHSMインスタンスを実行するクラスター
- AWS Direct Connect接続の冗長性
- AWS Direct Connectロケーションの冗長性
- AWS Direct Connect仮想インターフェイスの冗長性
- デッドレターキューが設定されていないAWS Lambda関数
- AWS Lambdaの障害時イベントの送信先
- AWS Lambda VPC対応関数(マルチAZ冗長性なし)
- AWS Resilience Hubポリシー違反
- AWS Resilience Hub耐障害性スコア
- AWS Resilience Hub評価からの経過時間
- AWS Site-to-Site VPNにDOWNステータスのトンネルが少なくとも1つある
- 信頼性に関するAWS Well-Architectedのリスクの高い問題
- Classic Load Balancerに複数のAZが設定されていない
- ELB Connection Draining
- ELBクロスゾーン負荷分散
- ロードバランサーの最適化
- NATゲートウェイAZインディペンデンス
- Network Load Balancerのクロスロードバランシング
- Incident Managerレプリケーションセット内のAWSリージョンの数
- シングルAZアプリケーションチェック
- VPNトンネルの冗長性
- ActiveMQアベイラビリティーゾーンの冗長性
- RabbitMQアベイラビリティーゾーンの冗長性
耐障害性の項目は、標準で多くの情報を確認できます。
障害が発生することを想定して設計していたとしても、意図した通りに設定されていないと縮退がうまくいかなかったり、システム復旧に時間を要したりと問題になることが多いです。耐障害性の項目を使い、要件通りに設定ができているかを環境構築時に確認することをオススメします。
耐障害性の詳細については公式ドキュメントを確認してください。
サービス制限
サービス制限の項目では、AWSリソースの上限に対する情報を確認できます。
確認できる項目は以下となります。
- Auto Scalingグループ
- Auto Scalingの起動設定
- CloudFormationスタック
- DynamoDBの読み込みキャパシティー
- DynamoDB書き込みキャパシティー
- EBSアクティブなスナップショット
- EBS Cold HDD(sc1)ボリュームストレージ
- EBS汎用SSD(gp2)ボリュームストレージ
- EBS汎用SSD(gp3)ボリュームストレージ
- EBSマグネティック(スタンダードボリュームストレージ)
- EBSプロビジョンドIOPS(SSDボリューム集計IOPS)
- EBSプロビジョンドIOPS SSD(io1ボリュームのストレージ)
- EBSプロビジョンドIOPS SSD(io2ボリュームのストレージ)
- EBSスループット最適化HDD(st1)ボリュームストレージ
- EC2オンデマンドインスタンス
- EC2リザーブドインスタンスのリース
- EC2-Classic Elastic IPアドレス
- EC2-VPC Elastic IPアドレス
- ELB Application Load Balancer
- ELB Classic Load Balancer
- ELB Network Load Balancer
- IAMグループ
- IAMインスタンスプロファイル
- IAMポリシー
- IAMロール
- IAMサーバー証明書
- IAMユーザー
- Kinesisリージョンあたりのシャード
- Lambdaコードストレージの使用状況
- RDSクラスターパラメータグループ
- RDSクラスターロール
- RDSクラスター
- RDS DBインスタンス
- RDS DB手動スナップショット
- RDS DBパラメータグループ
- RDS DBセキュリティグループ
- RDSイベントサブスクリプション
- RDSセキュリティグループあたりの最大認証数
- RDSオプショングループ
- RDSマスターあたりのリードレプリカ
- RDSリザーブドインスタンス
- RDSサブネットグループ
- RDSサブネットグループあたりのサブネット
- RDS合計ストレージクォータ
- Route 53ホストゾーン
- Route 53最大ヘルスチェック数
- Route 53再利用可能な委託セット
- Route 53トラフィックポリシー
- Route 53トラフィックポリシーのインスタンス
- SES日次送信クォータ
- VPC
- VPCインターネットゲートウェイ
必要な時に必要なだけリソースを使うことができるのがAWSをはじめとしたクラウドのメリットになります。
しかし運用を続けていく中で、システム構築当初よりも利用するリソースが増えていくことが多くあり、AWSリソースの利用上限に抵触してしまい、いざという時にAWSリソースが増やせないことになりかねません。
このような状況を回避するためにも定期的にサービス制限の項目を確認し、必要に応じてAWSリソースの上限緩和申請を行うことをオススメします。
サービス制限の詳細については公式ドキュメントを確認してください。
運用上の優秀性(オペレーショナルエクセレンス)
運用上の優秀性の項目では、AWS環境でシステムを運用するうえで有用となる情報を確認できます。
確認できる項目は以下となります。
- Amazon API Gatewayが実行ログを記録しない
- X-Rayトレースが有効になっていないAmazon API GatewayのREST API
- Amazon CloudFrontのアクセスログの設定
- Amazon CloudWatchアラームアクションが無効になっている
- AWS Systems Managerによって管理されていないAmazon EC2インスタンス
- タグの不変性が無効になっているAmazon ECRリポジトリ
- Container Insightsが無効のAmazon ECSクラスター
- Amazon ECSタスクのログ記録が有効になっていない
- CloudWatchのログ記録が設定されていないAmazon OpenSearch Service
- Amazon Redshiftクラスター監査ログ
- Amazon S3でイベント通知が有効になっていない
- Amazon SNSトピックがメッセージ配信ステータスのログを記録しない
- フローログがないAmazon VPC
- アクセスログが有効になっていないApplication Load BalancerおよびClassic Load Balancer
- AWS CloudFormationのスタック通知
- S3バケット内におけるオブジェクトのAWS CloudTrailデータイベントのログ記録
- AWS CodeBuildプロジェクトのログ記録
- AWS CodeDeployの自動ロールバックとモニターの有効化
- AWS CodeDeploy Lambdaでは一括デプロイ設定を使用
- AWS Elastic Beanstalk拡張ヘルスレポートが設定されていない
- マネージドプラットフォーム更新を無効にしたAWS Elastic Beanstalk
- AWS Fargateプラットフォームバージョンが最新ではない
- AWS Systems Manager State Managerの関連付けが非準拠の状態になっている
- CloudTrail証跡が、Amazon CloudWatch Logsで設定されていない
- ロードバランサーのElastic Load Balancing削除保護が有効になっていない
- RDS DBクラスター削除保護チェック
- RDS DBインスタンスのマイナーバージョン自動アップグレードチェック
運用上の優秀性では、AWSリソースのログ出力設定や削除保護設定などを確認することできます。
問題が発生した時やオペレーションミスのようないざという時に助かる項目になるので、AWS環境構築時に確認することをオススメします。
運用上の優秀性の詳細については公式ドキュメントを確認してください。
まとめ
2回に渡ってTrusted Advisorについて紹介してきました。
Trusted Advisorは、視覚的に確認することできるため、AWS環境の構築時だけではなく、運用時にも活用することで、意図せずに行われている設定に気が付くことができます。
定期的に活用することでAWS環境を最適化できますので、ぜひ運用に取り入れてみてください。