AWS認定ソリューションアーキテクト – プロフェッショナルに合格するまで【管理&ガバナンス篇】

AWS認定ソリューションアーキテクトプロフェッショナル試験合格に向けての資料集。以下の資料を何度も読み込んで、手を動かしながら実践を繰り返すことが合格の近道となる。管理ガバナンス に関するサービスはこちら。

カテゴリ サービス名
コンピューティング EC2, ECS, Lambda, Batch, Elastic Beanstalk
ストレージ S3, EFS, Storage Gateway
データベース RDS, DynamoDB, ElastiCache, Redshift
移行と転送 Database Migration Service, Application Discovery Service, Migration Hub, Server Migration Service, Snowball
ネットワーク VPC, CloudFront, Route53, API Gateway, Direct Connect
開発者用ツール CodeCommit, CodeBuild, CodeDeploy, CodePipeline
管理とガバナンス Organizations, Config, CloudWatch, Auto Scaling, CloudFormation, CloudTrail, Config, OpsWorks, Systems Manager
分析 Athena, EMR, CloudSearch, Elasticsearch, Kinesis, QuickSight
セキュリティとコンプライアンス IAM, RAM, Cognito, GuardDuty, Inspector, CloudHSM, AD&SSO, WAF&Shield
モバイル Amplify, Mobile Hub
アプリケーション統合 SNS, SQS

AWS Organizations(1)Organizationsの概要

AWS Organizations

AWS Organizationsは、 複数のAWSアカウントを統合 するためのアカウント管理サービス。 ビジネスの予算、セキュリティ、コンプライアンスのニーズを満たす 以下の機能が備わっている。

  • アカウントの一元管理
  • 一括請求
  • アカウントのグループ( OU )化
  • アカウント毎の アクセスコントロール
  • タグの標準化
  • AIと機械学習サービスがデータを収集/保存する方法を制御
  • 自動バックアップポリシーの使用
  • IAMの統合

これらの機能を実現するために、AWS Organizationsは以下のAWSサービスと連携している。

サービス名 有効化 実現できること
AWS IAM 不要 サービスアクティビティ による 最終アクセス時間の確認
AWS Artifact 必要 組織契約 による 契約の受諾
AWS CloudTrail 必要 組織の証跡 による 証跡の組織への適用
AWS CloudWatch Events 不要
AWS Config 必要 アグリゲータ による 集約ビュー の表示
AWS Control Tower 不要
AWS Directory Service 必要
AWS Firewall Manager 必要 AWS Firewall Manager による WAFルールの管理
AWS ライセンスマネージャー 必要
AWS RAM 必要
AWS Service catalog 必要
Service Quotas 不要
AWS シングルサインオン 必要
AWS System Manager 必要 Systems Manager Explorer によるデータの同期
タグポリシー 必要

AWS Organizationsを有効化すると、複数のAWSアカウントを一括管理することができる。それぞれのアカウントは、ルートを親として 組織単位 (OU)ごとに分類することができる。アカウントは、 管理アカウント (=ルート)と メンバーアカウント に分かれ、管理アカウントにはメンバーアカウントを管理するための様々な権限が付与される。AWS Organizationsの全ての機能を有効化することも、 一括請求機能のみを有効化 することもできる。各OUもしくはアカウント単位に、 サービスコントロールポリシー と呼ばれる各アカウントが持つ権限を明示したポリシーを適用することができる。 サービスコントロールポリシーとタグポリシーは、デフォルトでは無効化されている ので、利用する場合は有効化する。

ベストプラクティス

管理アカウントのベストプラクティス

管理アカウントにはSCPが適用されない ため CloudTrailだけを有効化 し、それ以外のAWSリソースは保有しない。また、管理アカウントのrootユーザのメールアドレスには、 マネージャーを宛先に含むグループメールを指定 する。このrootユーザの パスワードは長くて複雑なものを使用 し、 定期的に変更せずにその内容を金庫に保管、もしくはマネージャーが保管、パスワード管理ツールで保管 する。rootユーザは、MFAの使用を有効した上で、 そのアクセス方法とアクセスのログの記録方法を定める 。管理アカウントに登録する電話番号用に、 専用のSIMカードとデバイスを用意 し、こちらもそのアクセス方法とアクセスのログの記録方法を定める。アカウントへのアクセスや認証情報の 使用方法やリセット方法を定めた上で、定期的にレビュー を行う。

メンバーアカウントのベストプラクティス

メンバーアカウントのrootユーザにも、「グループメールアドレスの指定」「複雑なパスワードの使用」「MFAの有効化」を行う。また、 電話番号は管理アカウントと同一のものを指定 する。アカウントへのアクセスや認証情報の 使用方法やリセット方法を定めた上で、定期的にレビュー を行う。さらに SCPを使用して、メンバーアカウントのrootユーザが実行できることを制限 する。

組織とアカウント

組織

組織を作成する際に、全ての機能を有効化する(奨励)か、課金機能のみ有効化するかを選択することができる。全ての機能を有効化する場合には、各メンバーアカウントに、 AWSServiceRoleForOrganizations ロールが必要となる。また、全て機能を有効化した場合は、 課金機能のみの有効化に戻すことはできない

組織にアカウントを追加するには、

  • メンバーアカウントを新規で作成
  • 既存のAWSアカウントを招待

のいずれかを選ぶことができる。 組織を作成した際、管理アカウントに登録されているメールアドレス宛に確認のメールが送信される 。AWS Organizationsが持つことのできる管理アカウントは1つのみである。 管理アカウントはサービスコントロールポリシーの影響を受けない 。Organizationsを削除すると復元できず、またポリシーも削除される。削除する際には、 全てのメンバーアカウントを消去する必要 がある。

Organizationsに参加したメンバーアカウントでは、サービスコントロールポリシーやタグポリシーが即座に適用され、またサービスの信頼を有効化している場合は、そのサービスからメンバーアカウントに対してアクションを実行することが許可される。また、Organizations内で新規のメンバーアカウントを作成することもできる。

アカウント

メンバーアカウントを新規で作成した場合は、 ルートアカウントと AWSServiceRoleForOrganizations ロール、 OrganizationAccountAccessRole が作成 される。一方で、既存のAWSアカウントを招待した場合には、 AWSServiceRoleForOrganizations ロールのみが作成される。既存のAWSアカウントを招待した場合でも、運用の統一性を考慮して、 OrganizationAccountAccessRole ロールを作成することが望ましい。

新規でメンバーアカウントを作成すると、 アカウント名や電話番号などの情報が管理アカウントからコピー される。また、 rootアカウントのパスワードが自動作成されるが、これを取得することはできない 。このパスワードを取得するためには、パスワードの回復プロセスを実行する必要がある。

組織に属する アカウントの一覧はCSVファイルでエクスポートすることができる

メンバーアカウントを新規で作成した場合は、作成から7日以降に組織から削除することができる 。また、メンバーアカウントが組織を離れると全てのタグが削除される。アカウント自体を閉鎖する場合には、 rootユーザのパスワードを取得した上でアカウントの閉鎖処理を行う。

OU

OUは最大5レベルの深さまでネスト できる。OUは名前の変更、タグ付け、アカウントとの紐付け、削除が可能。

組織ポリシー

組織にはサービスポリシーと管理ポリシーが存在する。 ポリシーはルート, OU, アカウントに関連づけることができルートもしくはOUに紐づけられたポリシーは、そのOUもしくはその下にあるOUが継承 する。

ポリシーの継承

サービスポリシーの場合、フィルタのように振る舞うため、 上位のSCPにDeny構文があった場合、下位のSCPでそのサービスを許可することはできない 。拒否リストの場合は、まず全てのサービスが許可されていて、不要なサービスを明示的に拒否する。 拒否リスト戦略は、AWSのサービスが追加された場合でもメンテナンスが不要 である。 許可リストの場合は、デフォルトのFullAWSAccessを削除して暗黙的なDenyを適用 し、必要なサービスのみを許可したSCPをアタッチする。

How SCP Permissions Work

管理ポリシーの場合、構文内に 継承演算子 が含まれており、これに従った動作を行う。継承演算子には、 @@assign, @@append, @@remove が存在する。

サービスポリシー( SCP

サービスポリシーは、 最大で使用できるアクセスの権限を各アカウントに対して指定できる機能 。Organizationsの全ての機能を有効化した場合に使用できる。 メンバーアカウントのルートユーザにも適用されアカウントに与える影響が非常に大きいため、適用する際には詳細なテストが必要である。IAMのサービスアクティビティに表示される、各アカウントの最終アクセス時刻を参考にポリシーの内容を決定することが望ましい。

サービスポリシーは以下のタスクには影響しない。

  • 管理アカウント
  • Service-linked Role
  • ルートユーザの認証
  • サポートプランの変更
  • CloudFrontの一部機能

サービスポリシーは、IAMポリシーとほぼ同じ構文を使用する。 Principal, NotPrincipal, NotResource は使用できない。複数のポリシーが適用されている場合は、明示的なDenyがAllowよりも優先される。ポリシーの例は、 サービスコントロールポリシーの例 を参照のこと。

管理ポリシー

AIサービスのオプトアウトポリシー は、Amazon CodeGuru Profiler、Amazon Comprehend、Amazon Lex、Amazon Polly、Amazon Rekognition、Amazon Textract、Amazon Transcribe、Amazon TranslateなどのAIサービスで行われるサービス改善のためのコンテンツ保存のオプトアウトを設定できる。

バックアップポリシー は、AWS Backupを使用したバックアップのルール(バックアップの頻度、バックアップが発生する時間枠、バックアップするリソースを含むAWSリージョン、バックアップを保存するボールト)を指定できる。

タグポリシーは、タグキーおよびタグ値の大文字と小文字の処理方法の設定などを規定することができる。デフォルトでは、タグポリシーへのコンプライアンスの強制はされない。強制をサポートするAWSサービスは 強制をサポートするサービスとリソースタイプ を参照のこと。

参考リンク

AWS Security Hub(1)Security Hubの概要

Security Hubとは

Security Hubは、Amazon GuardDutyAmazon InspectorAmazon Macie などのAWSが提供するセキュリティ関連サービスや、AWSパートナーが提供するセキュリティ製品からの セキュリティ検出結果等を統合的に閲覧可能なサービス で、本サービスを利用することで、情報の収集や優先度の決定などのコストを低減できる。発見事項は、Security Hub内に90日保管 される。Security Hubは、リージョンサービスであり、使用するリージョン毎にサービスを有効化する必要 がある。一方で、 複数アカウントをサポート しており、全てのアカウントを統合して発見事項を表示することもできる。

また、Center for Internet Security (CIS) AWS Foundations Benchmark のスコア表示にも対応しており、業界標準のベストプラクティスをどの程度満たしているかについても確認することが可能となっている。なお、この機能を正常に実行するためには、AWS Configを有効化することが必要。ベストプラクティスを満たしていない場合は、Security Hubから修復方法を確認することができる。

Amazon CloudWatch Eventsとの統合がサポートされているため、検出結果を受信した際に実行するカスタムアクションを規定することもできる。

また、インサイトと呼ばれるグループ化された検出結果のコレクションが存在し、コレクションを用いることで、修復が必要な問題の特定ができる。カスタムインサイトを作成することも可能。

AWS Security Hub のセットアップ

一部機能のみではあるがCloudFormationに対応しているため、CloudFormation経由でSecurity Hubをセットアップすることができる。

サービスロールの有効化

以下のサービスロールを有効化することで、AWS CloudTrail, AWS Config, Amazon CloudWatch Logs および Amazon SNS から 情報を取得する権限 を Security Hub 付与する。また、AWS Config に対して 新たなConfigルールを設定する権限 も付与される。このルールは、CIS AWS Foundationsコンプライアンスチェックに使用される。これらを正常に動作させるためには、 AWS Configを有効化 しておく必要がある。

Resources:
  ServiceLinkedRoleForSecurityHub:
    Type: AWS::IAM::ServiceLinkedRole
    DeletionPolicy: Retain
    Properties: 
      AWSServiceName: securityhub.amazonaws.com
      Description: A service-linked role required for AWS Security Hub to access your resources.

Security Hubの有効化

Security Hubを有効化することで、CIS AWS Foundationsコンプライアンスチェックが自動で有効化される。

Resources:
  SecurityHub:
    DependsOn:
      - ServiceLinkedRoleForSecurityHub
    Type: AWS::SecurityHub::Hub

AWS Security Hubのセットアップテンプレート

AWS Security Hubを含むAWSのセキュリティサービスをまとめて有効化できるCloudFormationテンプレートを公開している。

作成されるAWSサービス CloudFormationテンプレート
セキュリティサービス全般 cloudformation-launch-stack
Security Hub のみ cloudformation-launch-stack

CIS AWS Foundationsコンプライアンスチェック

Security Hubは、AWS Configに新たなConfigルールを自動的に作成した上で、Center for Internet Security (CIS) AWS Foundations Benchmarkに適合しているかのチェックを行う。Security Hubは、AWS Security Finding と呼ばれるテンプレートに沿って検出結果を表示するために、結果毎にデータ変換等を行う必要がない。AWS Security Finding の構成については、下記を参照のこと。

なお、CIS AWS Foundationsは、同一リージョン内のリソースに対しての結果のみ有効であり、他のリージョンのリソースに対しての結果は FAILED が返却される。したがって、例えば複数のリージョンでCloudTrailが有効化されており、各リージョンで証跡用およびアクセスログ用のバケットが作成されている場合は、チェック 2.3 および 2.6は非準拠として表示される

チェックは、前回から12時間以内に再度実行 される。また、変更によってトリガーされるチェックに関しては、リソースに変更が変更された際に実行される。

AWSサービスとの統合

Security Hubは、Amazon GuardDutyAmazon InspectorAmazon Macie など、AWSが提供するセキュリティ関連サービスで生成されたセキュリティ検索結果を統合することができる。統合を行うためには、各AWSサービスを有効化する必要がある。

CloudWatchイベントによる自動化

CloudWatchイベントを使用して、Security Hubで検知した問題やリソースの変更に自動的に対応することが可能である。以下の通知を行うことが可能である。

  1. 全ての結果を自動的にCloudWatchイベントに送信
  2. カスタムアクションに関連づけられた結果をCloudWatchイベントに送信
  3. カスタムアクションを使用してインサイトの結果をCloudWatchイベントに送信

1.の場合は、CIS AWS Foundationsコンプライアンスチェックに準拠している状態でも非準拠の場合でも、全ての結果が CloudWatch Events に送信されてしまうので、そのうち 準拠から非準拠となった状態のイベントのみを受信して、Amazon SNS に送信する場合は、以下のような Amazon CloudWatch Events を作成する。

  CloudWatchEventsForSecurityHub:
    Type: AWS::Events::Rule
    Properties: 
      Description: CloudWatch Events about SecurityHub.
      EventPattern:
        source:
          - aws.securityhub
        detail-type: 
          - Security Hub Findings - Imported
        # Events fired when status has been changed from PASSED to ARCHIVED.
        detail:
          findings:
            Compliance:
              Status:
                - PASSED
            RecordState:
              - ARCHIVED
      Name: AWS_Security_Hub
      State: ENABLED
      Targets:
        - Arn: !Ref SnsTopicARN
          Id: CloudWatchEventsForSecurityHub

これは、結果のステータスが PASSED から FAILED に変化した場合、

  1. 既存の結果のステータスを PASSED から ARCHIVED に設定
  2. 結果のステータスが FAILE である新たな結果を生成

という挙動となるため、1.の挙動のみを検知することで実現している。

CloudFormation Launch Stack URL

以下のボタンから上のCloudFormationテンプレートを実行することが可能である。ソースコードは、aws-cloudformation-templates/security – GitHub にて公開。

作成されるAWSサービス CloudFormationテンプレート
セキュリティサービス全般 cloudformation-launch-stack
Security Hub のみ cloudformation-launch-stack

AWS(3)監視およびログサービス

AWS Configとは

AWS Configは、リソースごとの設定項目を生成し、履歴としてこれを保持するため、全ての変更を追跡することが可能で、AWSリソース間の関係と設定の履歴などを確認することができる。また、設定が最適であるかの評価設定のスナップショットの取得設定変更時の通知IAMポリシーの確認などを行うことが可能である。

設定項目は、S3バケットに蓄積することが可能で、データはJSON形式でS3に6時間ごとに送信される。また、リソースが変更されたタイミング等で、Amazon SNSを用いてEメール等で通知することも可能である。

設定履歴と設定項目、設定レコーダ

設定履歴は、特定期間の特定リソースに関する設定項目のコレクションである。設定項目は、アカウント内のサポートされているAWSリソースの属性を記録したものである。設定レコーダは、これらのリソースの設定を設定項目としてアカウントに保存する。

設定スナップショットと設定ストリーム

設定スナップショットは、設定項目のコレクションで記録対象のリソースの全体像を示す。また、設定ストリームは、これらの記録しているリソースの設定項目の自動更新リストを示す。

AWS Configの仕組み

AWS Configは、サポートされているAWSリソースを検出し、リソースごとに設定項目を生成し、その記録を履歴として保持する。Configはリソースごとに、DescribeもしくはListのAPIコールによって、リソースの全ての変更を追跡するConfigルールを利用することで、定期的にこのルールに照らして、リソースの設定の評価を行うことができる。

AWS Configルール

AWS Configルールは、各リソースの望ましい設定を確認することが可能で、事前に定義済みのルールが用意されている。また、各ユーザがカスタムルールを作成することも可能となっている。AWS Configは、このルールを参照して、現在の設定を評価する。

マネージドインスタンスの記録

AWS Configを用いて、EC2やオンプレミスサーバのソフトウェアインベントリの変更を記録可能である。

課金

記録される設定項目ごとに 0.003 USDの課金が発生し、これに加えてS3やSNSを使用する場合には、これらのサービスの使用料金が課金される。

AWS Cloudtrailとは

AWSサービスによって実行されたアクションを記録するサービス。この記録を基にAWS アカウントのアクティビティの分析を行い、これらに対応することが可能である。デフォルトで有効にされており、90日間のログが履歴として保持される。また、それ以上保持したい場合には、トレイル機能を用いて、S3やCloudWatch Logs等にイベント配信することも可能である。トレイルは、全リージョンに対して、もしくは特定のリージョンの情報のみを保持することが可能で、作成後に設定内容を変更することもできる。デフォルトではS3の暗号化機能を用いて暗号化され、アクションの15分以内にデータが送信される。

Cloudtrailイベントとトレイル

Cloudtrailイベントには、管理イベントとデータイベントの2種類が存在するが、トレイルにはデフォルトでは管理イベントのみが記録される

課金

デフォルトでは無料で90日間のログを保持しており、これに加えて1つのトレイル作成までは無料となっている。S3やSNSを使用する場合には、これらのサービスの使用料金が課金される。