「webで何か」作るブログ

35歳という遅すぎるスタートをなんとかする為のブログです。基本的に自分にとっての役立ちメモ。

well architected frameworkの中から特に大事な10項目(AWS公式動画の要約)

AWSの公式動画で、Well Architected FrameWorkの項目のうち、重要なのに漏れがちな10項目、というものがあった。

その内容を要約として残しておきます。

セキュリティ関連

ルートアカウントは最小限の利用にする

  • MFAの有効化
  • 普段使いにルートを利用しない
  • アクセスキーは作らない、持たない
  • 普段使いのアカウントはIAMで行う

ユーザーには最小限の権限を付与する

  • IAMを利用する
  • 共有アカウントにしない
  • 各ユーザーに対して必要となる権限だけを付与する
  • 最小限のアクセス権限から始め、必要に応じて権限を追加する
  • 多くの権限を持つIAMユーザーに対してはMFAを設定する
  • IAMの有効期限を設定する(退職者のIAM削除などは漏れてしまいがちだが、これで半自動化される)
  • 認証情報を定期的にローテーションする(認証情報漏えい時のリスク軽減)

認証情報(アクセスキー)をハードコーディングしない

  • プログラムからAWSリソースへのアクセスはIAMロールで管理する
  • 認証情報はSTS(security token service)を利用するとローテーションも自動で行われるのでおすすめ。
  • git-secretを利用すると、AWSの認証情報が含まれたコードをアップしようとするとエラーになる。アップロード済みのコードスキャンも可能

セキュリティ関連ログを一元管理する

  • CloudTrailで操作ログの取得を設定する(基本的にONになっている)
  • CloudTrailの保存期間を設定すること
  • CloudTrail以外にもログの取得が可能なものもあるため、有効化すること
通知の自動化
  • GuardDutyを利用すると、(明らかに)疑わしいアクティビティを検知して通知してくれる(取得したログの量に対する従量課金なので保存期間に留意)

アクセス設定を必要最低限に

  • ネットワーク、各サービス、それぞれのレイヤーでアクセス権限を最低限にすること
  • ネットワーク >> ネットワークACL,AWS WAF,AWS Shield
  • EC2,RDSなど >> セキュリティグループ

信頼性

バックアップを取得して、定期的なリカバリテストでRTO・RPOを満たすことを確認する

  • AMIの作成
  • EBSのスナップシしておく
  • 定期的に復旧テストを行い、手順を確認しておく
  • RDSの自動バックアップ機能
  • AWS BackUp

単一障害点の排除

  • 冗長化の準備をしておく
  • 例)RDS MultiAZデプロイメントオプションでは同期レプリケーションと自動フェイルオーバーを提供してくれる
  • マネージドサービスを利用する

コスト最適化

使用量の把握

  • 請求ダッシュボードやAWS Cost Explorerで把握する
  • IAMユーザーで請求情報を見られるように設定する(ルートで行う)
  • コストエクスプローラーを有効化する(ルートで行う)
  • AWS Budgetsの活用

メトリクスに基づき、リソースをサイジングする

  • AWS CloudWatchでリソースの利用状況を把握する
  • CloudWatchLogsでOSやアプリケーションのログを取得も可能
使用率が一定の場合
一定でない場合
  • オートスケーリングなどを活用する
インスタンスタイプについて

インタンスファミリーはそれぞれ特性・世代・サイズで表現されている。定期的に見直して適切なものに変更していくことがコスト最適化に有効。

最新のインスタンスファミリーを利用する
  • 最新のインスタンスファミリーの方が高性能かつ安価な場合は多い

利用率を分析し、購入オプションを検討する。また、リージョンごとの利用料金の差も考慮する

  • リージョンによって価格が異なるため、ビジネス要件を踏まえた上でリージョンを選択する。
時間課金計
その他

この他にも長期利用の購入オプションがあるため、ニーズに合ったものを利用していく

  • CloudFront
  • DynamoDB