

# Amazon API Gateway におけるデータ保護
<a name="data-protection"></a>

AWS の[責任共有モデル](https://aws.amazon.com/compliance/shared-responsibility-model/)は、Amazon API Gateway でのデータ保護に適用されます。このモデルで説明されているように、AWS は、AWS クラウド のすべてを実行するグローバルインフラストラクチャを保護する責任を担います。お客様は、このインフラストラクチャでホストされているコンテンツに対する管理を維持する責任があります。また、使用する AWS のサービスのセキュリティ設定と管理タスクもユーザーの責任となります。データプライバシーの詳細については、[データプライバシーのよくある質問](https://aws.amazon.com/compliance/data-privacy-faq/)を参照してください。欧州でのデータ保護の詳細については、*AWS セキュリティブログ*に投稿された[AWS 責任共有モデルおよび GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/)のブログ記事を参照してください。

データを保護するため、AWS アカウント 認証情報を保護し、AWS IAM アイデンティティセンター または AWS Identity and Access Management (IAM) を使用して個々のユーザーをセットアップすることをお勧めします。この方法により、それぞれのジョブを遂行するために必要な権限のみが各ユーザーに付与されます。また、次の方法でデータを保護することもお勧めします:
+ 各アカウントで多要素認証 (MFA) を使用します。
+ SSL/TLS を使用して AWS リソースと通信します。TLS 1.2 は必須であり TLS 1.3 がお勧めです。
+ AWS CloudTrail で API とユーザーアクティビティロギングをセットアップします。CloudTrail 証跡を使用して AWS アクティビティをキャプチャする方法については、「AWS CloudTrail ユーザーガイド**」の「[Working with CloudTrail trails](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html)」を参照してください。
+ AWS のサービス 内のすべてのデフォルトセキュリティ管理に加え、AWS 暗号化ソリューションを使用します。
+ Amazon Macie などの高度なマネージドセキュリティサービスを使用します。これらは、Amazon S3 に保存されている機密データの検出と保護を支援します。
+ コマンドラインインターフェイスまたは API を使用して AWS にアクセスする際に FIPS 140-3 検証済みの暗号化モジュールが必要な場合は、FIPS エンドポイントを使用します。利用可能な FIPS エンドポイントの詳細については、「[連邦情報処理規格 (FIPS) 140-3](https://aws.amazon.com/compliance/fips/)」を参照してください。

お客様の E メールアドレスなどの極秘または機密情報は、タグ、または名前****フィールドなどの自由形式のテキストフィールドに配置しないことを強くお勧めします。これには、コンソール、API、AWS CLI、または AWS SDK を使用して API Gateway やその他の AWS のサービス を使用する場合も含まれます。名前に使用する自由記述のテキストフィールドやタグに入力したデータは、課金や診断ログに使用される場合があります。外部サーバーへの URL を提供する場合は、そのサーバーへのリクエストを検証するための認証情報を URL に含めないように強くお勧めします。

# Amazon API Gateway でのデータ暗号化
<a name="data-protection-encryption"></a>

データ保護には、転送時 (API Gateway とのデータの送受信中) のデータ保護と、保管時 ( での保存中) のデータ保護がありますAWS

## Amazon API Gateway で保管時のデータ暗号化
<a name="data-protection-at-rest"></a>

REST API のキャッシュを有効にする場合は、キャッシュ暗号化を有効にすることができます。詳細については、「[API Gateway での REST API のキャッシュ設定](api-gateway-caching.md)」を参照してください。

データ保護の詳細については、*AWS セキュリティブログ*のブログ投稿「[AWS の責任共有モデルと GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/)」を参照してください。

### 証明書のプライベートキーの暗号化と復号化
<a name="private-key"></a>

プライベート API のカスタムドメイン名を作成する場合、ACM 証明書とプライベートキーは、エイリアス **aws/acm** の AWS マネージド KMS キーを使用して暗号化されます。このエイリアスに対応するキー ID は、AWS KMS コンソールの **AWS マネージドキー**で確認できます。

API Gateway は ACM リソースに直接アクセスしません。AWS TLS 接続マネージャを使用して、証明書のプライベートキーを保護し、プライベートキーにアクセスします。ACM 証明書を使用してプライベート API の API Gateway カスタムドメイン名を作成すると、API Gateway は証明書をAWS TLS 接続マネージャに関連付けます。**aws/acm** というプレフィックスの AWS マネージドキーに対して AWS KMS で権限を作成して関連付けます。権限はポリシーツールであり、TLS 接続マネージャに暗号化オペレーションでの KMS キーの使用を許可します。この権限により、被付与者のプリンシパル (TLS 接続マネージャ) は指定された権限オペレーションを KMS キーで呼び出し、証明書のプライベートキーを復号化できます。TLS 接続マネージャは、証明書と復号された (プレーンテキストの) プライベートキーを使用して API Gateway サービスのクライアントとの安全な接続 (SSL/TLS セッション) を確立します。証明書がプライベート API の API Gateway カスタムドメイン名から関連付けを解除されると、それらのドメイン名へのアクセスの許可も取り消されます。

KMS キーへのアクセスを削除する場合は、AWS CLI で AWS マネジメントコンソール または `update-service` コマンドを使用して、サービスから証明書を置き換えるか削除することをお勧めします。

### API Gateway の暗号化コンテキスト
<a name="encryption-context"></a>

[暗号化コンテキスト](https://docs.aws.amazon.com/kms/latest/developerguide/encrypt_context.html)とは、プライベートキーの使用用途に関するコンテキスト情報を含む、オプションのキー値ペアのセットです。AWS KMS は暗号化コンテキストを暗号化されたデータにバインドして、追加の認証済みデータとして使用し、認証付き暗号化をサポートします。

TLS キーを API Gateway と TLS 接続マネージャで使用すると、API Gateway サービスの名前が保管中のキーの暗号化に使用される暗号化コンテキストに含まれます。証明書とプライベートキーが使用されている API Gateway カスタムドメイン名は、次のセクションに示すように CloudTrail ログの暗号化コンテキストまたは ACM コンソールの **[関連付けられたリソース]** タブで確認できます。

データを復号化するには、そのリクエストに同じ暗号化コンテキストを含めます。API Gateway はすべての AWSKMS 暗号化オペレーションで同じ暗号化コンテキストを使用します。キーは `aws:apigateway:arn` で、値は API Gateway `PrivateDomainName` リソースの Amazon リソースネーム (ARN) です。

次の例では、`CreateGrant` のようなオペレーションの出力における暗号化コンテキストを示しています。

```
"constraints": {
"encryptionContextEquals": {
"aws:acm:arn": "arn:aws:acm:us-west-2:859412291086:certificate/9177097a-f0ae-4be1-93b1-19f911ea4f88",
"aws:apigateway:arn": "arn:aws:apigateway:us-west-2:859412291086:/domainnames/denytest-part1.pdx.sahig.people.aws.dev+cbaeumzjhg"
}
},
"operations": [
"Decrypt"
],
"granteePrincipal": "tlsconnectionmanager.amazonaws.com"
```

## Amazon API Gateway で転送中のデータ暗号化
<a name="data-protection-in-transit"></a>

Amazon API Gateway で作成された API は、HTTPS エンドポイントのみ公開します。API Gateway は非暗号化 (HTTP) エンドポイントをサポートしません。

API Gateway はデフォルトの `execute-api` エンドポイントの証明書を管理します。カスタムドメイン名を設定する場合は、[ドメイン名の証明書を指定します](how-to-custom-domains.md#custom-domain-names-certificates)。ベストプラクティスとして、[証明書を固定](https://docs.aws.amazon.com/acm/latest/userguide/troubleshooting-pinning.html)しないでください。

セキュリティを強化するために、API Gateway カスタムドメインに適用する最小バージョンの Transport Layer Security (TLS) プロトコルを選択できます。WebSocket API および HTTP API は TLS 1.2 のみをサポートします。詳細については、「[API Gateway でカスタムドメインのセキュリティポリシーを選択する](apigateway-custom-domain-tls-version.md)」を参照してください。

また、アカウントで独自 SSL 証明書を使用して Amazon CloudFront ディストリビューションを設定し、リージョン API で使用することもできます。セキュリティとコンプライアンスの要件に基づいて、TLS 1.1 以降の CloudFront ディストリビューションにセキュリティポリシーを設定できます。

データ保護の詳細については、「[API Gateway で REST API を保護する](rest-api-protect.md)」と *AWS セキュリティブログ*の「[The AWS Shared Responsibility Model and GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/)」を参照してください。

# インターネットトラフィックのプライバシー
<a name="security-traffic-privacy"></a>

Amazon API Gateway を使用すると、Amazon Virtual Private Cloud (VPC) からのみアクセスできるプライベート REST API を作成できます。VPC は、[インターフェイス VPC エンドポイント](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html)を使用します。これは、VPC 内に作成するエンドポイントネットワークインターフェイスです。[ リソースポリシー](apigateway-private-api-create.md#apigateway-private-api-set-up-resource-policy)を使用して、選択した VPC および VPC エンドポイント (複数の AWS アカウント含む) から API へのアクセスを許可または拒否できます。各エンドポイントを使用して複数のプライベート API にアクセスできます。Direct Connect を使用してオンプレミスネットワークから Amazon VPC への接続を確立し、その接続経由でプライベート API にアクセスすることも可能です。いずれの場合も、プライベート API へのトラフィックは安全な接続を使用し、Amazon のネットワークの外には出ません。パブリックインターネットからは隔離されています。詳細については、「[API Gateway のプライベート REST API](apigateway-private-apis.md)」を参照してください。