ワークロード OU — アプリケーションアカウント - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ワークロード OU — アプリケーションアカウント

簡単な調査を行い、 AWS セキュリティリファレンスアーキテクチャ (AWS SRA) の未来に影響を与えます。

次の図は、アプリケーションアカウント (およびアプリケーション自体) で設定されている AWS セキュリティサービスを示しています。

アプリケーションアカウントのセキュリティサービス。

Application アカウントは、エンタープライズアプリケーションを実行および維持するためのプライマリインフラストラクチャとサービスをホストします。アプリケーションアカウントとワークロード OU は、いくつかの主要なセキュリティ目標を果たします。まず、アプリケーションごとに個別のアカウントを作成して、ワークロード間の境界と制御を提供し、役割、許可、データ、および暗号化キーが発生する問題を回避します。アプリケーションチームに、他のユーザーに影響を与えることなく、独自のインフラストラクチャを管理する幅広い権限を付与できる個別のアカウントコンテナを提供したいと考えています。次に、セキュリティ運用チームがセキュリティデータを監視および収集するメカニズムを提供して、保護のレイヤーを追加します。セキュリティチームによって設定およびモニタリングされるアカウントセキュリティサービス (Amazon GuardDuty、 AWS Config AWS Security Hub CSPM、Amazon EventBridge、IAM Access Analyzer) の組織の証跡とローカルデプロイを採用します。最後に、企業が一元的に制御を設定できるようにします。アプリケーションアカウントは、適切なサービス権限、制約、およびガードレールを継承する Workloads OU のメンバーにして、より広範なセキュリティ構造に合わせます。

設計上の考慮事項

組織内には、複数のビジネスアプリケーションが存在する可能性があります。ワークロード OU は、本番環境と非本番環境の両方を含む、ビジネス固有のワークロードのほとんどを格納することを目的としています。これらのワークロードは、商用の既製品 (COTS) アプリケーションと、社内で独自に開発したカスタムアプリケーションやデータサービスを組み合わせることができます。開発環境とともにさまざまなビジネスアプリケーションを整理するためのパターンはほとんどありません。1 つのパターンは、本番環境、ステージング環境、テスト環境、開発環境など、開発環境に基づいて複数の子 OUs を持ち、異なるアプリケーションに関連する OU AWS アカウント の下に個別の子を使用することです。 OUs もう 1 つの一般的なパターンは、アプリケーションごとに個別の子 OUs を設定し、個々の開発環境に個別の子を使用すること AWS アカウント です。正確な OU とアカウント構造は、アプリケーション設計とそれらのアプリケーションを管理するチームによって異なります。これらのコントロールは OU に SCPs として実装する方が簡単なため、環境固有でもアプリケーション固有でも、適用するセキュリティコントロールを検討してください。 OUs ワークロード指向の OUs整理に関するその他の考慮事項については、 AWS ホワイトペーパーの「アプリケーション OUs」セクションを参照してください。複数のアカウントを使用して AWS 環境を整理する

アプリケーション VPC

アプリケーションアカウントの Virtual Private Cloud (VPC) には、インバウンドアクセス (モデリングするシンプルなウェブサービス用) とアウトバウンドアクセス (アプリケーションのニーズまたは AWS のサービス ニーズ用) の両方が必要です。デフォルトでは、VPC 内のリソースは相互にルーティング可能です。2 つのプライベートサブネットがあります。1 つは EC2 インスタンス (アプリケーションレイヤー) をホストし、もう 1 つは Amazon Aurora (データベースレイヤー) をホストします。アプリケーション層やデータベース層など、異なる層間のネットワークセグメンテーションは、インスタンスレベルでトラフィックを制限する VPC セキュリティグループを介して行われます。復元力のために、ワークロードは複数のアベイラビリティーゾーンにまたがり、ゾーンごとに 2 つのサブネットを使用します。

設計上の考慮事項

Traffic Mirroring を使用して、EC2 インスタンスの Elastic Network Interface からネットワークトラフィックをコピーできます。その後、コンテンツ検査、脅威モニタリング、またはトラブルシューティングのために、トラフィックを帯域外セキュリティアプライアンスおよびモニタリングアプライアンスに送信できます。たとえば、VPC から出るトラフィック、またはソースが VPC 外にあるトラフィックを監視できます。この場合、VPC 内を通過するトラフィックを除くすべてのトラフィックをミラーリングし、単一のモニタリングアプライアンスに送信します。Amazon VPC フローログはミラーリングされたトラフィックをキャプチャしません。通常、パケットヘッダーからの情報のみをキャプチャします。トラフィックミラーリングを使用すると、ペイロードを含む実際のトラフィックコンテンツを分析できるため、ネットワークトラフィックに関するより深い洞察が得られます。トラフィックミラーリングは、機密性の高いワークロードの一部として動作している可能性がある、または問題が発生した場合に詳細な診断が必要と予想される EC2 インスタンスの elastic network interface に対してのみ有効にします。

VPC エンドポイント

VPC endpoints は、スケーラビリティと信頼性だけでなく、セキュリティ制御の別のレイヤーを提供します。これらを使用して、アプリケーション VPC を他の に接続します AWS のサービス。(アプリケーションアカウントでは、SRA AWS は AWS KMS AWS Systems Managerと Amazon S3 の VPC エンドポイントを使用します)。エンドポイントは仮想デバイスです。これらは水平にスケールされ、冗長で、可用性の高い VPC コンポーネントです。これにより、ネットワークトラフィックに可用性リスクや帯域幅の制約を課すことなく、VPC 内のインスタンスとサービス間の通信が可能になります。VPC エンドポイントを使用して、インターネットゲートウェイ、NAT デバイス、VPN 接続、または AWS Direct Connect 接続を必要と AWS PrivateLink せずに、サポートされている AWS のサービス および を搭載した VPC エンドポイントサービスに VPC をプライベートに接続できます。VPC 内のインスタンスは、他の と通信するためにパブリック IP アドレスを必要としません AWS のサービス。VPC と他の VPC 間のトラフィック AWS のサービス は、Amazon ネットワークを離れません。

VPC エンドポイントを使用するもう 1 つの利点は、エンドポイントポリシーの設定を有効にすることです。VPC エンドポイントポリシーは、エンドポイントの作成時または変更時にエンドポイントに加える IAM リソースポリシーです。エンドポイントの作成時に IAM ポリシーをアタッチしない場合、 はサービスへのフルアクセスを許可するデフォルトの IAM ポリシーをア AWS タッチします。エンドポイントポリシーは、IAM ユーザーポリシーやサービス固有のポリシー (S3 バケットポリシーなど) を上書き、または置き換えません。これは、エンドポイントから指定されたサービスへのアクセスを制御するための別個の IAM ポリシーです。このようにして、どの AWS プリンシパルがリソースまたはサービスと通信できるかを別の制御レイヤーに追加します。

Amazon EC2

アプリケーションを構成する Amazon EC2 インスタンスは、インスタンスメタデータサービス (IMDSv2) のバージョン 2 を使用します。IMDSv2 は、IDMS にアクセスを試みるために使われた、ウェブサイトアプリケーションファイアウォール、オープンリバースプロキシ、サーバーサイドリクエストフォージェリ (SSRF) の脆弱性、オープンレイヤー 3 ファイアウォール、および NAT という 4 種類の脆弱性に対する保護を追加します。さらなる詳細については、ブログ投稿 Add defense in depth against open firewalls, reverse proxies, and SSRF vulnerabilities with enhancements to the EC2 Instance Metadata Service を参照してください。

(アカウント境界のサブセットとして) 個別の VPCs を使用して、ワークロードセグメント別にインフラストラクチャを分離します。サブネットを使用すると、単一の VPC 内で多階層ウェブアプリケーションの各階層 (ウェブサーバー、アプリケーションサーバーおよびデータベースサーバーなど) を隔離できます。インターネットからの直接アクセスを認めるべきでないインスタンスには、プライベートサブネットを使用します。インターネットゲートウェイを使用せずにプライベートサブネットから Amazon EC2 API を呼び出すには、 を使用します AWS PrivateLink。セキュリティグループを使用してインスタンスへのアクセスを制限します。VPC フローログを使用して、インスタンスに到達するトラフィックをモニタリングします。の一機能である Session Manager を使用して AWS Systems Manager、インバウンド SSH ポートを開いて SSH キーを管理する代わりに、インスタンスにリモートでアクセスします。オペレーティングシステムとデータには、個別の Amazon Elastic Block Store (Amazon EBS) ボリュームを使用します。作成した新しい EBS ボリュームとスナップショットコピーの暗号化を強制するように を設定できます AWS アカウント。 

実装例

AWS SRA コードライブラリは、Amazon EC2 でのデフォルトの Amazon EBS 暗号化の実装例を提供します。 AWS 組織内の各 AWS アカウント AWS リージョンおよび 内でアカウントレベルのデフォルトの Amazon EBS 暗号化を有効にする方法を示します。

AWS Nitro Enclaves

AWS Nitro Enclaves は、Amazon EC2 インスタンスから enclaves と呼ばれる独立した実行環境を作成できる Amazon EC2 機能です。Enclaves は、分離された、強化された、制約の厳しい仮想マシンです。単一の親 EC2 インスタンスの CPU とメモリは、分離されたエンクレーブに分割されます。各エンクレーブは独立したカーネルを実行します。エンクレーブは、親インスタンスとの安全なローカルソケット接続のみを提供します。永続的ストレージ、対話型アクセス、外部ネットワークはありません。ユーザーはエンクレーブに SSH 接続できず、エンクレーブ内のデータとアプリケーションには、親インスタンスのプロセス、アプリケーション、またはユーザー (ルートまたは管理者) がアクセスできません。EC2 インスタンス内で、個人を特定できる情報 (PII)、医療、財務、知的財産のデータなど、最も機密性の高いデータを保護できます。Nitro Enclaves を使用すると、外部サービスとの統合を心配することなく、アプリケーションに集中できます。Nitro Enclaves には、承認されたコードのみが実行されていることを確認するためのソフトウェアの暗号化認証と、エンクレーブのみが機密マテリアルにアクセスできる AWS KMS ように との統合が含まれています。これにより、最も機密性の高いデータ処理アプリケーションの攻撃対象領域を減らすことができます。Nitro Enclaves の使用には追加料金はかかりません。

暗号化認証は、エンクレーブのアイデンティティを証明するために使用されるプロセスです。認証プロセスは Nitro Hypervisor を通じて行われます。これにより、エンクレーブの署名付き認証ドキュメントが生成され、そのアイデンティティが別のサードパーティーまたはサービスに証明されます。認証ドキュメントには、エンクレーブのパブリックキー、エンクレーブイメージとアプリケーションのハッシュなど、エンクレーブのキーの詳細が含まれています。

Nitro Enclaves 用の AWS Certificate Manager (ACM) を使用すると、Nitro Enclaves で EC2 インスタンスで実行されているウェブアプリケーションとウェブサーバーでパブリックおよびプライベート SSL/TLS 証明書を使用できます。SSL/TLS 証明書は、ネットワーク通信を保護し、インターネット経由でウェブサイトのアイデンティティを確立し、プライベートネットワーク上のリソースを確立するために使用されます。ACM for Nitro Enclaves は、SSL/TLS 証明書の購入、アップロード、更新の時間がかかり、エラーが発生しやすい手動プロセスを削除します。ACM for Nitro Enclaves は、安全なプライベートキーを作成し、証明書とそのプライベートキーをエンクレーブに配布し、証明書の更新を管理します。ACM for Nitro Enclaves では、証明書のプライベートキーはエンクレーブ内で分離されたままになるため、インスタンスとそのユーザーがアクセスできなくなります。詳細については、AWS Certificate Manager Nitro Enclaves ドキュメントの「 for Nitro Enclaves」を参照してください。

アプリケーション ロード バランサー

アプリケーションロードバランサーは、受信アプリケーショントラフィックを複数のアベイラビリティーゾーンの EC2 インスタンスなどの複数のターゲットに分散します。 AWS SRA では、ロードバランサーのターゲットグループはアプリケーション EC2 インスタンスです。 AWS SRA は HTTPS リスナーを使用して、通信チャネルが暗号化されていることを確認します。Application Load Balancer はサーバー証明書を使用してフロントエンド接続を終了し、ターゲットにリクエストを送信する前に、クライアントからのリクエストを復号化します。

AWS Certificate Manager (ACM) は Application Load Balancer とネイティブに統合され、SRA AWS は ACM を使用して必要な X.509 (TLS サーバー) パブリック証明書を生成および管理します。Application Load Balancer セキュリティポリシーを通して、フロントエンド接続に TLS 1.2 と強力な暗号を適用できます。詳細については、「Elastic Load Balancing ドキュメント」を参照してください。

設計上の考慮事項
  • Application Load Balancer でプライベート TLS 証明書を必要とする厳密に内部アプリケーションなどの一般的なシナリオでは、このアカウント内の ACM を使用してプライベート証明書を生成できます AWS Private CA。 AWS SRA では、ACM ルートプライベート CA は Security Tooling アカウントでホストされ、Security Tooling アカウントセクションで前述したように、 AWS 組織全体、またはエンドエンティティ証明書の発行 AWS アカウント に固有の と共有できます。

  • パブリック証明書の場合、ACM を使用してこれらの証明書を生成し、自動ローテーションを含めて管理できます。または、SSL/TLS ツールを使用して証明書署名リクエスト (CSR) を作成し、認証機関 (CA) によって署名された CSR を取得して証明書を生成し、証明書を ACM にインポートするか、証明書を IAM にアップロードして Application Load Balancer で使用することもできます。証明書をACMにインポートする場合は、証明書の有効期限を監視し、有効期限が切れる前に更新する必要があります。

  • 追加の防御レイヤーについては、Application Load Balancer を保護するための AWS WAF ポリシーをデプロイできます。エッジポリシー、アプリケーションポリシー、さらにはプライベートまたは内部ポリシー強制レイヤーさえあれば、通信要求の可視性が高まり、統一されたポリシー強制が提供されます。詳細については、ブログ記事「Deploying defense in deep using AWS マネージドルール for AWS WAF」を参照してください。

AWS Private CA

AWS Private Certificate Authority (AWS Private CA) は、Application Load Balancer で使用するプライベート証明書を生成するために Application アカウントで使用されます。Application Load Balancer が TLS 経由で安全なコンテンツを提供する一般的なシナリオです。これには、Application Load Balancer に TLS 証明書をインストールする必要があります。厳密に内部のアプリケーションの場合、プライベート TLS 証明書は安全なチャネルを提供できます。

AWS SRA では、 AWS Private CA は Security Tooling アカウントでホストされ、 を使用してアプリケーションアカウントに共有されます AWS RAM。これにより、アプリケーションアカウントのデベロッパーは、共有プライベート CA から証明書をリクエストできます。組織全体または組織全体で CAs を共有する AWS アカウント と、すべての で重複CAs を作成および管理する際のコストと複雑さが軽減されます AWS アカウント。ACM を使用して共有 CA からプライベート証明書を発行すると、証明書はリクエスト元のアカウントでローカルに生成され、ACM は完全なライフサイクル管理と更新を提供します。

Amazon Inspector

AWS SRA は Amazon Inspector を使用して、Amazon Elastic Container Registry (Amazon ECR) に存在する EC2 インスタンスとコンテナイメージを自動的に検出してスキャンし、ソフトウェアの脆弱性や意図しないネットワークへの露出 がないか確認します。

Amazon Inspector は、このアカウントの EC2 インスタンスに脆弱性管理サービスを提供するため、アプリケーションアカウントに配置されます。さらに、Amazon Inspector は EC2 インスタンスとの間の不要なネットワークパスをレポートします。

メンバーアカウントの Amazon Inspector は、委任管理者アカウントによって一元管理されます。SRA では、Security Tooling AWS アカウントは委任管理者アカウントです。委任管理者アカウントは、組織のメンバーの検出結果データと特定の設定を管理できます。これには、すべてのメンバーアカウントの集計結果の詳細の表示、メンバーアカウントのスキャンの有効化または無効化、 AWS 組織内のスキャンされたリソースの確認が含まれます。

設計上の考慮事項

の一機能である Patch Manager を使用してオンデマンドパッチ適用をトリガーし AWS Systems Manager、Amazon Inspector のゼロデイまたはその他の重大なセキュリティ脆弱性を修復できます。Patch Manager を使用すると、通常のパッチ適用スケジュールを待つことなく、これらの脆弱性にパッチを適用できます。修復は、Systems Manager Automation ランブックを使用して実行されます。詳細については、2 部構成のブログシリーズAmazon Inspector と AWS を使用して の脆弱性管理と修復を自動化 AWS Systems Managerする」を参照してください。

AWS Systems Manager

AWS Systems Manager は、 AWS のサービス 複数の からの運用データを表示 AWS のサービス し、 AWS リソース全体の運用タスクを自動化するために使用できる です。自動承認ワークフローとランブックを使用すると、人為的ミスを減らし、 AWS リソースのメンテナンスとデプロイタスクを簡素化できます。

これらの一般的な自動化機能に加えて、Systems Manager は、予防、detective な、および応答性の高いセキュリティ機能を多数サポートしています。AWS Systems Manager エージェント (SSM エージェント) は、EC2 インスタンス、オンプレミスサーバー、または仮想マシン (VM) にインストールして設定できる Amazon ソフトウェアです。SSM Agent により、Systems Manager がこれらのリソースを更新、管理、および設定できるようにします。Systems Manager は、これらのマネージドインスタンスをスキャンし、パッチ、設定、カスタムポリシーで検出された違反を報告する (または是正措置を講じる) ことで、セキュリティとコンプライアンスを維持するのに役立ちます。

SRA は、Systems Manager AWS の一機能である Session Manager を使用して、インタラクティブなブラウザベースのシェルと CLI エクスペリエンスを提供します。 https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.htmlこれにより、インバウンドポートを開いたり、baston ホストを維持したり、SSH キーを管理したりすることなく、安全で監査可能なインスタンス管理が提供されます。 AWS SRA は、Systems Manager の一機能である Patch Manager を使用して、オペレーティングシステムとアプリケーションの両方の EC2 インスタンスにパッチを適用します。

また、SRA は Systems Manager AWS の一機能である Automation を使用して、Amazon EC2 インスタンスやその他の AWS リソースの一般的なメンテナンスおよびデプロイタスクを簡素化します。オートメーションは、1 つ以上のノードの状態を変更 (承認されたオートメーションを使用) したり、スケジュールに従ってノードの状態を管理するなどの一般的な IT タスクを簡略化できます。Systems Manager には、タグを使用したインスタンスの大規模なグループのターゲットに役立つ機能や定義する制限に応じた変更を行うために役立つ速度制御といった機能が含まれます。Automation は、golden Amazon マシンイメージ (AMI) の作成や到達不可能な EC2 インスタンスの復元などの複雑なタスクを簡素化する、ワンクリックAutomation を提供します。さらに、IAM ロールに特定の関数を実行するための特定のランブックへのアクセスを許可することで、運用セキュリティを強化できます。これらのロールに直接アクセス許可を付与する必要はありません。たとえば、IAM ロールにパッチ更新後に特定の EC2 インスタンスを再起動するアクセス許可を付与したいが、そのロールに直接アクセス許可を付与しない場合は、代わりに Automation ランブックを作成し、そのロールにランブックのみを実行するアクセス許可を付与できます。

設計上の考慮事項
  • Systems Manager の正常な機能は、EC2 インスタンスメタデータに左右されます。Systems Manager は、インスタンスメタデータサービスのバージョン 1 またはバージョン 2(IMDSv1 および IMDSv2)を使用してインスタンスメタデータにアクセスできます。

  • SSM エージェントは、Amazon EC2 メッセージ AWS のサービス 、Systems Manager、Amazon S3 などのさまざまな および リソースと通信する必要があります。この通信を実現するには、サブネットにアウトバウンドインターネット接続または適切な VPC エンドポイントのプロビジョニングが必要です。 AWS SRA は、SSM Agent の VPC エンドポイントを使用して、さまざまな へのプライベートネットワークパスを確立します AWS のサービス。

  • オートメーションを使用すると、組織内でベストプラクティスを共有できます。ランブックでリソース管理のベストプラクティスを作成し、 AWS リージョン および グループ間でランブックを共有できます。ランブックパラメータの許容値を制限することもできます。これらのユースケースでは、セキュリティツールや共有サービスなどの中央アカウントで自動化ランブックを作成し、 AWS 組織の他の部分と共有する必要がある場合があります。一般的なユースケースには、パッチ適用とセキュリティ更新を一元的に実装し、VPC 設定または S3 バケットポリシーのドリフトを修正し、EC2 インスタンスを大規模に管理する機能が含まれます。実装の詳細については、Systems Manager のドキュメントを参照してください。

Amazon Aurora

AWS SRA では、Amazon AuroraAmazon S3 が論理データ層を構成します。Aurora はフルマネージド型のリレーショナルデータベースエンジンで、MySQL および PostgreSQL と互換性があります。EC2 インスタンスで実行されているアプリケーションは、必要に応じて Aurora および Amazon S3 と通信します。Aurora は DB サブネットグループ内のデータベースクラスターで構成されます。

設計上の考慮事項

多くのデータベースサービスと同様に、Aurora のセキュリティは 3 つのレベルで管理されます。AuroraDB クラスターおよび DB インスタンス上でAmazon Relational Database Service(Amazon RDS)管理アクションを実行できるユーザーを制御するには、IAMを使用します VPC 内の Aurora DB クラスタのクラスタエンドポイントと DB インスタンスのポートへの接続を開くことができるデバイスと EC2 インスタンスを制御するには、VPC セキュリティグループを使用します。Aurora DB クラスターのログインとアクセス権限を認証するには、MySQL または PostgreSQL のスタンドアロン DB インスタンスと同じ方法を使用するか、Aurora MySQL 互換エディションの IAM データベース認証を使用します。この後者のアプローチでは、IAM ロールと認証トークンを使用して、Aurora MySQL 互換 DB クラスターに対して認証を行います。

Amazon S3

Amazon S3 は、業界をリードするスケーラビリティ、データ可用性、セキュリティ、パフォーマンスを提供するオブジェクトストレージサービスです。これは、 上に構築された多くのアプリケーションのデータバックボーンであり AWS、機密データを保護するために適切なアクセス許可とセキュリティコントロールが不可欠です。Amazon S3 の推奨されるセキュリティのベストプラクティスについては、documentationonline tech talks、および blog posts 中のより深いダイブインを参照します。最も重要なベストプラクティスは、S3 バケットへの過度に許容されるアクセス(特にパブリックアクセス)をブロックすることです。

AWS KMS

AWS SRA は、キー管理に推奨されるディストリビューションモデルを示しています。ここで、 は暗号化されるリソース AWS アカウント と同じ 内に AWS KMS key 存在します。このため、 AWS KMS は Security Tooling アカウントに含まれるだけでなく、アプリケーションアカウントで使用されます。アプリケーションアカウントでは、アプリケーションリソースに固有のキーを管理する AWS KMS ために使用されます。キーポリシーを使用して、ローカルアプリケーションロールにキー使用権限を付与し、キー管理者への管理およびモニタリング権限を制限することで、職務の分離を実装できます。 

設計上の考慮事項

分散モデルでは、 AWS KMS キー管理責任はアプリケーションチームにあります。ただし、中央セキュリティチームは、次のような重要な暗号化イベントのガバナンスとモニタリングを担当できます。

  • KMS キーにインポートされたキーマテリアルの有効期限が近づいています。

  • KMS キーのキーマテリアルが自動的にローテーションされました。

  • AKMS キーが削除されました。

  • 復号の失敗率が高い。

AWS CloudHSM

AWS CloudHSM は、 でマネージドハードウェアセキュリティモジュール (HSMs) を提供します AWS クラウド。これにより、アクセスを制御する FIPS 140-2 レベル 3 検証HSMs を使用して AWS 、 で独自の暗号化キーを生成して使用できます。を使用して AWS CloudHSM 、ウェブサーバーの SSL/TLS 処理をオフロードできます。これにより、Webサーバーの負担が軽減され、 AWS CloudHSM中のWebサーバーのプライベートキーが保存されるためセキュリティが強化されます。同様に、ネットワークアカウントの AWS CloudHSM インバウンド VPC に から HSM をデプロイしてプライベートキーを保存し、発行認証機関として機能する必要がある場合は証明書リクエストに署名できます。

設計上の考慮事項

FIPS 140-2 レベル 3 のハード要件がある場合は、ネイティブ KMS キーストアを使用するのではなく、 AWS CloudHSM クラスターをカスタムキーストアとして使用する AWS KMS ように を設定することもできます。これにより、KMS キーを保護する HSMs を担当しながら、データを暗号化 AWS のサービス する AWS KMS と の統合からメリットを得られます。これにより、管理下にあるシングルテナント HSM と、 AWS KMSの使いやすさと統合が組み合わされます。インフラストラクチャを管理する AWS CloudHSM には、パブリックキーインフラストラクチャ (PKI) を採用し、HSMs の管理経験のあるチームが必要です。

AWS Secrets Manager

AWS Secrets Manager は、必要とする認証情報(secrets) を保護し、アプリケーションサービス、および IT リソースへアクセスするのに役立ちます。このサービスを使用すると、データベース認証情報、API キー、その他のシークレットをライフサイクルを通じて効率的にローテーション、管理、取得できます。コード内のハードコードされた認証情報 を Secrets Manager への API コールに置き換えて、シークレットをプログラムで取得できます。これは、シークレットがコード内に存在しなくなったため、コードを調べる人によってシークレットが侵害されないようにするのに役立ちます。さらに、Secrets Manager は、環境 (開発、本番前、本番) 間でアプリケーションを移動するのに役立ちます。コードを変更する代わりに、適切に名前が付けられ、参照されているシークレットが環境で使用可能であることを確認することができます。これにより、さまざまな環境でアプリケーションコードの一貫性と再利用性が促進されますが、コードのテスト後に必要な変更や人間による操作が少なくなります。

Secrets Manager を用いて、きめ細かい IAM ポリシーとリソースベースのポリシーを使用して、シークレットへのアクセスを管理できます。 AWS KMSを使用して、管理する暗号化キーを用いてシークレットを暗号化することで、シークレットを保護できます。Secrets Manager は、一元化された監査のための AWS ログ記録およびモニタリングサービスとも統合されます。

Secrets Manager は、 AWS KMS keys および データキーによるエンベロープ暗号化を使用して、各シークレット値を保護します。シークレットを作成するときは、 AWS アカウント および リージョンで任意の対称カスタマーマネージドキーを選択するか、Secrets Manager の AWS マネージドキーを使用できます。

ベストプラクティスとして、シークレットをモニタリングして変更を記録できます。これにより、予期しない使用や変更を調査できます。不要な変更はロールバックできます。Secrets Manager は現在、組織とアクティビティをモニタリング AWS のサービス できる 2 つの AWS CloudTrail と をサポートしています AWS Config。CloudTrail は、Secrets Manager コンソールからの呼び出しや Secrets Manager API へのコード呼び出しを含む、Secrets Manager のすべての API コールをイベントとしてキャプチャします。さらに、CloudTrail は、 にセキュリティやコンプライアンスに影響する可能性がある、 AWS アカウント または運用上の問題のトラブルシューティングに役立つ可能性がある、その他の関連 (非 API) イベントをキャプチャします。これには、特定のシークレットローテーションイベントやシークレットバージョンの削除が含まれます。 は、Secrets Manager のシークレットへの変更を追跡およびモニタリングすることで、検出コントロールを提供 AWS Config できます。これらの変更には、シークレットの説明、ローテーション設定、タグ、および KMS 暗号化キーやシークレットローテーションに使用される AWS Lambda 関数などの他の AWS ソースとの関係が含まれます。設定とコンプライアンスの変更の通知を受信する Amazon EventBridge を設定して AWS Config、通知または修復アクションのために特定のシークレットイベントをルーティングすることもできます。

AWS SRA では、Secrets Manager はアプリケーションアカウントに配置され、ローカルアプリケーションのユースケースをサポートし、使用状況に近いシークレットを管理します。ここでは、インスタンスプロファイルがアプリケーションアカウントの EC2 インスタンスにアタッチされます。次に、Secrets Manager で個別のシークレットを設定して、そのインスタンスプロファイルがシークレットを取得できるようにします。たとえば、適切な Active Directory または LDAP ドメインに参加し、Aurora データベースにアクセスできるようにします。Secrets Manager は Amazon RDS と統合され、Amazon RDS DB インスタンスまたはマルチ AZ DB クラスターを作成、変更、または復元するときにユーザー認証情報を管理します。これにより、キーの作成とローテーションを管理し、コード内のハードコードされた認証情報を Secrets Manager へのプログラムによる API コールに置き換えることができます。 

設計上の考慮事項

一般に、シークレットが使用される場所に最も近いアカウントで Secrets Manager を設定および管理します。このアプローチは、ユースケースに関するローカルな知識を活用し、アプリケーション開発チームにスピードと柔軟性を提供します。追加の制御レイヤーが適切である可能性のある厳密に制御された情報については、Secrets Manager が Security Tooling アカウントのシークレットを一元管理できます。

Amazon Cognito

Amazon Cognito を使用すると、ユーザーのサインアップ、サインイン、アクセスコントロールをウェブおよびモバイルアプリに迅速かつ効率的に追加できます。Amazon Cognito は数百万のユーザーにスケールし、Apple、Facebook、Google、Amazon などのソーシャル ID プロバイダー、および SAML 2.0 と OpenID Connect を介したエンタープライズ ID プロバイダーとのサインインをサポートします。Amazon Cognito の 2 つの主なコンポーネントは、ユーザープールID プールです。ユーザープールは、アプリケーションユーザーにサインアップとサインインのオプションを提供するユーザーディレクトリです。ID プールを使用すると、ユーザーに他の へのアクセスを許可できます AWS のサービス。ID プールとユーザープールは別々に使用することも、一緒に使用することもできます。一般的な使用シナリオについては、Amazon Cognito ドキュメントを参照してください。

Amazon Cognito は、ユーザーのサインアップとサインインのための組み込みのカスタマイズ可能な UI を提供します。Amazon Cognito 用の Android、iOS、JavaScript SDKs を使用して、アプリにユーザーのサインアップページとサインインページを追加できます。Amazon Cognito Sync は、アプリケーション関連のユーザーデータのデバイス間同期を可能にする AWS のサービス および クライアントライブラリです。

Amazon Cognito は、保管中のデータと転送中のデータの多要素認証と暗号化をサポートしています。Amazon Cognito ユーザープールは、アプリケーション内のユーザーアカウントへのアクセスを保護するのに役立つ高度なセキュリティ機能を提供します。これらの高度なセキュリティ機能は、リスクベースの適応認証を提供し、侵害された認証情報の使用から保護します。 

設計上の考慮事項
  • AWS Lambda 関数を作成し、Lambda トリガーを使用して、ユーザーのサインアップ、確認、サインイン (認証) などのユーザープールオペレーション中にその関数をトリガーできます。認証チャレンジの追加、ユーザーの移行、検証メッセージのカスタマイズを行うことができます。一般的なオペレーションとユーザーフローについては、Amazon Cognito ドキュメントを参照してください。Amazon Cognito は Lambda 関数を同期的に呼び出します。

  • Amazon Cognito ユーザープールを使用して、小さなマルチテナントアプリケーションを保護できます。マルチテナント設計の一般的なユースケースは、アプリケーションの複数のバージョンのテストをサポートするためにワークロードを実行することです。マルチテナント設計は異なるデータセットを持つ単一のアプリケーションのテストにも役立ち、これはクラスターリソースを最大限に活用することを可能にします。ただし、テナントの数と予想されるボリュームが関連する Amazon Cognito サービスクォータと一致していることを確認してください。これらのクォータは、アプリケーション内のすべてのテナント間で共有されます。

Amazon Verified Permissions

Amazon Verified Permissions は、構築するアプリケーションのスケーラブルなアクセス許可管理およびきめ細かな認可サービスです。開発者と管理者は、専用でセキュリティファーストのオープンソースポリシー言語である Cedar をロールと属性とともに使用して、よりきめ細かなコンテキスト対応のポリシーベースのアクセスコントロールを定義できます。開発者は、認可を外部化し、ポリシーの管理と管理を一元化することで、より安全なアプリケーションを迅速に構築できます。Verified Permissions には、スキーマ定義、ポリシーステートメントの文法、数百万のアクセス許可にまたがる自動推論が含まれているため、デフォルトの拒否と最小特権の原則を適用できます。このサービスには、認可の決定と作成者ポリシーのテストに役立つ評価シミュレーターツールも含まれています。これらの機能により、ゼロトラストオブジェクトをサポートするために、詳細できめ細かな認可モデルのデプロイが容易になります。Verified Permissions は、ポリシーストア内のアクセス許可を一元化し、開発者がこれらのアクセス許可を使用してアプリケーション内のユーザーアクションを承認するのに役立ちます。

API を使用してアプリケーションからサービスに接続し、ユーザーアクセスリクエストを承認できます。認可リクエストごとに、サービスは関連するポリシーを取得し、それらのポリシーを評価して、ユーザー、ロール、グループメンバーシップ、属性などのコンテキスト入力に基づいて、ユーザーがリソースに対してアクションを実行することを許可されているかどうかを判断します。Verified Permissions を設定して接続し、ポリシー管理および認可ログを送信できます AWS CloudTrail。ID ストアとして Amazon Cognito を使用する場合は、Verified Permissions と統合し、Amazon Cognito がアプリケーションの認可決定で返す ID トークンとアクセストークンを使用できます。Verified Permissions に Amazon Cognito トークンを提供します。これは、トークンに含まれる属性を使用してプリンシパルを表し、プリンシパルのエンタイトルメントを識別します。この統合の詳細については、ブログ AWS 記事「Simplifying fine-grained authorization with Amazon Verified Permissions and Amazon Cognito」を参照してください。 

Verified Permissions は、ポリシーベースのアクセスコントロール (PBAC) を定義するのに役立ちます。PBAC は、ポリシーとして表現されるアクセス許可を使用して、アプリケーション内のどのリソースにアクセスできるかを決定するアクセスコントロールモデルです。PBAC は、ロールベースのアクセスコントロール (RBAC) と属性ベースのアクセスコントロール (ABAC) を統合し、より強力で柔軟なアクセスコントロールモデルを実現します。PBAC の詳細と、Verified Permissions を使用して認可モデルを設計する方法については、 AWS ブログ記事「Amazon Verified Permissions を使用したアプリケーション開発におけるポリシーベースのアクセスコントロール」を参照してください。

AWS SRA では、Verified Permissions はアプリケーションアカウントにあり、Amazon Cognito との統合を通じてアプリケーションのアクセス許可管理をサポートします。

多層防御

アプリケーションアカウントは、 AWS を有効にするレイヤード防御プリンシパルを説明する機会を提供します。SRA で表されるシンプルなサンプルアプリケーションの中核をなす EC2 AWS インスタンスのセキュリティを考えてみましょう。多層防御で AWS のサービス 連携する方法を確認できます。このアプローチは、このガイドの前半の「組織全体に AWS セキュリティサービスを適用する」セクションで説明されているように、セキュリティサービスの構造図と一致しています AWS

  • 最も内側のレイヤーは EC2 インスタンスです。前述のように、EC2 インスタンスには、デフォルトで、またはオプションとして多くのネイティブセキュリティ機能が含まれています。例としては、IMDSv2Nitro システムAmazon EBS ストレージ暗号化などがあります。

  • 2 番目の保護レイヤーは、EC2 インスタンスで実行されているオペレーティングシステムとソフトウェアに焦点を当てています。Amazon Inspector や などのサービスAWS Systems Managerを使用すると、これらの設定をモニタリング、報告、修正できます。Amazon Inspector はソフトウェアに脆弱性がないか監視し、Systems Manager はマネージドインスタンスのパッチ設定ステータスをスキャンし、指定した修正アクションを報告して実行することで、セキュリティとコンプライアンスを維持するのに役立ちます。

  • インスタンス、およびこれらのインスタンスで実行されているソフトウェアは、 AWS ネットワークインフラストラクチャに配置されます。Amazon VPC のセキュリティ機能を使用することに加えて、SRA AWS は VPC エンドポイントを使用して VPC とサポートされている 間のプライベート接続を提供し AWS のサービス、ネットワーク境界にアクセスポリシーを配置するメカニズムも提供します。

  • EC2 インスタンス、ソフトウェア、ネットワーク、IAM ロールとリソースのアクティビティと設定は AWS Security Hub CSPM、Amazon AWS アカウント GuardDuty AWS Security Hub、、 AWS Config IAM Access Analyzer AWS CloudTrail、Amazon Macie などの重点サービスによってさらにモニタリングされます。 Amazon GuardDuty

  • 最後に、アプリケーションアカウント以外にも、 はどのリソースを他のアカウントと共有するか AWS RAM を制御し、IAM サービスコントロールポリシーは AWS 組織全体で一貫したアクセス許可を適用するのに役立ちます。