

# セキュリティ
<a name="security-1"></a>

AWS インフラストラクチャでシステムを構築すると、お客様と AWS の間でセキュリティ上の責任が分担されます。この[責任共有モデル](https://aws.amazon.com/compliance/shared-responsibility-model/)により、ホストオペレーティングシステムと仮想化レイヤーからサービスが運用されている施設の物理的なセキュリティに至るまでのコンポーネントを AWS が運用、管理、制御するため、お客様の運用上の負担を軽減するのに役立ちます。AWS セキュリティの詳細については、[AWS セキュリティセンター](https://aws.amazon.com/security/)を参照してください。

## リソースアクセス
<a name="resource-access"></a>

### IAM ロール
<a name="iam-roles"></a>

IAM ロールを使用すると、AWS クラウドのサービスとユーザーに、きめ細かなアクセスポリシーとアクセス許可を割り当てることができます。AWS でのワークロード検出を実行して、AWS アカウントのリソースを検出するには、複数のロールが必要です。

### Amazon Cognito
<a name="amazon-cognito"></a>

Amazon Cognito は、AWS でのワークロード検出に必要なコンポーネントへのアクセスを認証し、一時的で強固な認証情報をしてアクセスを認証するために使用されます。

## ネットワークアクセス
<a name="network-access"></a>

### Amazon VPC
<a name="amazon-vpc"></a>

AWS でのワークロード検出は Amazon VPC 内にデプロイされ、ベストプラクティスに従ってセキュリティと高可用性を実現します。詳細については、「[VPC のセキュリティのベストプラクティス](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-best-practices.html)」を参照してください。VPC エンドポイントは、インターネットを経由しないサービス間の通信を可能とし、使用可能な場合に設定されます。

セキュリティグループは、AWS でのワークロード検出の実行に必要なコンポーネント間のネットワークトラフィックを制御し分離するために使用されます。

デプロイが完了し起動したら、セキュリティグループを確認し、必要に応じてアクセスをさらに制限することをお勧めします。

### Amazon CloudFront
<a name="amazon-cloudfront"></a>

このソリューションでは、Amazon CloudFront によって配布される Amazon S3 バケットに[ホストされる](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html)ウェブコンソール UI をデプロイします。オリジンアクセスアイデンティティ機能を使用するとで、この Amazon S3 バケットのコンテンツには CloudFront からのみアクセスできます。詳細については、「*Amazon CloudFront デベロッパーガイド*」の「[Amazon S3 オリジンへのアクセスの制限](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html)」を参照してください。

CloudFront は追加のセキュリティ対策を有効にして、各ビューワーのレスポンスに HTTP セキュリティヘッダーを追加します。詳細については、「[CloudFront レスポンスでの HTTP ヘッダーの追加または削除](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/adding-response-headers.html)」を参照してください。

このソリューションでは、デフォルトの CloudFront 証明書を使用しており、サポートされる最小のセキュリティプロトコルは TLS v1.0 です。TLS v1.2 または TLS v1.3 の使用を必ず適用するには、デフォルトの CloudFront 証明書の代わりにカスタム SSL 証明書を使用する必要があります。詳細については、「[SSL/TLS 証明書を使用するように CloudFront ディストリビューションを設定する方法を教えてください](https://aws.amazon.com/premiumsupport/knowledge-center/install-ssl-cloudfront/)」を参照してください。

## アプリケーションの設定
<a name="application-configuration"></a>

### AWS AppSync
<a name="aws-appsync"></a>

AWS でのワークロード検出の GraphQL API には、[GraphQL 仕様](https://spec.graphql.org/June2018/#sec-Validation)に従って、AWS AppSync によってリクエスト検証が行われます。さらに、認証と許可は IAM と Amazon Cognito を使用して実装されます。これにより、ユーザーがウェブ UI で正常に認証されたときに Amazon Cognito が提供する JWT を使用します。

### AWS Lambda
<a name="aws-lambda"></a>

デフォルトでは、Lambda 関数は最新の安定したバージョンの言語ランタイムで設定されます。機密データやシークレットは記録されません。サービスのやり取りは、必要最小限の権限で実行されます。これらの権限を定義するロールは、関数間で共有されません。

### Amazon OpenSearch Service
<a name="amazon-opensearch-service"></a>

Amazon OpenSearch Service ドメインには、OpenSearch Service クラスターに対して行われた署名されていないリクエストを停止するために、アクセスを制限するアクセスポリシーが設定されています。これは単一の Lambda 関数に制限されています。

OpenSearch Service クラスターは、ノード間の暗号化を有効にして構築されており、既存の OpenSearch Service の[セキュリティ機能](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/security.html)の上にデータ保護の層を追加します。