

# SEC09-BP01 安全な鍵および証明書管理を実装する
<a name="sec_protect_data_transit_key_cert_mgmt"></a>

 Transport Layer Security (TLS) 証明書は、ネットワーク通信を保護し、インターネットやプライベートネットワーク上のウェブサイト、リソース、ワークロードの ID を確立するために使用されます。 

 **期待される成果:** 公開鍵基盤 (PKI) で証明書をプロビジョニング、デプロイ、保存、更新できる、安全な証明書管理システム。安全な鍵と証明書の管理メカニズムは、証明書のプライベートキーの内容が漏洩するのを防ぎ、自動的に証明書の定期更新を行います。また、他のサービスと統合して、ワークロード内のマシンリソースに安全なネットワーク通信と ID を提供します。キーの内容は、決して人的 ID にアクセス可能なものであってはなりません。

 **一般的なアンチパターン:** 
+  証明書のデプロイまたは更新プロセス中に手動で手順を実行する。 
+  プライベート認証機関 (CA) を設計する際、CA 階層に十分な注意を払わない。 
+  公共リソースに自己署名証明書を使用する。 

 **このベストプラクティスを活用するメリット: **
+  自動デプロイと自動更新により証明書管理を簡素化する 
+  TLS 証明書を使用して転送中のデータの暗号化を奨励する 
+  認証機関による証明書アクションのセキュリティと可監査性を向上させる 
+  CA 階層のさまざまなレイヤーにおける管理業務を整理する 

 **このベストプラクティスを活用しない場合のリスクレベル:** 高

## 実装のガイダンス
<a name="implementation-guidance"></a>

 最新のワークロードでは、TLS などの PKI プロトコルを使用して暗号化されたネットワーク通信が広く利用されています。PKI 証明書の管理は複雑になる場合がありますが、証明書のプロビジョニング、デプロイ、更新を自動化することで、証明書管理に伴う手間を軽減できます。 

 AWS は、汎用 PKI 証明書を管理するための 2 つのサービス、 [AWS Certificate Manager](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) および [AWS Private Certificate Authority (AWS Private CA) を提供しています。](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html)ACM は、パブリックとプライベートの AWS ワークロードの両方で使用するための証明書のプロビジョニング、管理、およびデプロイに使用できる主要なサービスです。ACM は AWS Private CA を使用して証明書を発行し、 [他の多くの AWS マネージドサービスと統合して、](https://docs.aws.amazon.com/acm/latest/userguide/acm-services.html) ワークロード用の安全な TLS 証明書を提供します。 

 AWS Private CA では、独自のルート認証機関または下位認証機関を確立し、API を通じて TLS 証明書を発行できます。こうした種類の証明書は、TLS 接続のクライアント側で信頼チェーンを制御し管理するシナリオで使用できます。TLS ユースケースに加えて、AWS Private CA は、Kubernetes ポッドへの証明書の発行、Matter デバイス製品認証、コード署名、 [およびカスタムテンプレートを使用した](https://docs.aws.amazon.com/privateca/latest/userguide/UsingTemplates.html)その他のユースケースにも使用できます。また、 [IAM Roles Anywhere ](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html) を使用して、プライベート CA によって署名された X.509 証明書が発行されたオンプレミスのワークロードに、一時的な IAM 認証情報を提供することもできます。 

 ACM と AWS Private CA に加えて、 [AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.html) は、IoT デバイスへの PKI 証明書のプロビジョニング、管理、およびデプロイに特化したサポートを提供します。AWS IoT Core は、 [公開鍵基盤に大規模に IoT デバイスをオンボーディングするための](https://docs.aws.amazon.com/whitepapers/latest/device-manufacturing-provisioning/device-manufacturing-provisioning.html) 特殊なメカニズムを提供します。 

**プライベート CA 階層を確立する際の考慮事項 **

 プライベート CA を確立する必要がある場合、特別な注意を払って事前に CA 階層を適切に設計しておくことが重要です。プライベート CA 階層を作成する場合は、CA 階層の各レベルを個別の AWS アカウント にデプロイすることがベストプラクティスです。この意図的な手順により、CA 階層内の各レベルへの外部からのアクセスが減り、CloudTrail ログデータ内の異常をより簡単に発見できるようになります。また、いずれかのアカウントに不正アクセスがあった場合、アクセス範囲と影響が小さくなります。ルート CA はそれぞれ別のアカウントに保存し、1 件以上の中間 CA 証明書の発行にのみ使用すべきです。 

 次に、ルート CA のアカウントとは別のアカウントに 1 つ以上の中間 CA を作成し、エンドユーザー、デバイス、または他のワークロードに証明書を発行します。最後に、ルート CA から中間 CA に証明書を発行します。これにより、エンドユーザーまたはデバイスに証明書が発行されます。回復力の計画、クロスリージョンレプリケーション、組織全体での CA の共有など、CA デプロイの計画と CA 階層の設計の詳細については、 [「Planning your AWS Private CA deployment」を](https://docs.aws.amazon.com/privateca/latest/userguide/PcaPlanning.html)参照してください。 

### 実装手順
<a name="implementation-steps"></a>

1.  ユースケースに必要となる適切な AWS サービスを判断します。 
   +  多くのユースケースでは、AWS Certificate Manager を使用して、 [既存の AWS パブリックキーインフラストラクチャを活用できます。](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html)ACM は、ウェブサーバー、ロードバランサー、または一般的に信頼されている証明書を使うその他の用途に TLS 証明書をデプロイするために使用できます。 
   +  独自のプライベート認証機関階層を確立する必要がある場合や、 [エクスポート可能な証明書へのアクセスが必要な場合は、](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html) AWS Private CA を検討してください。 [これにより、ACM を、](https://docs.aws.amazon.com/privateca/latest/userguide/PcaIssueCert.html) AWS Private CA を使用するさまざまな種類のエンドエンティティ証明書の発行に使用できます。 
   +  組み込み型モノのインターネット (IoT) デバイス向けに、証明書を大規模にプロビジョニングする必要があるユースケースについては、 [AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/x509-client-certs.html)を検討してください。 

1.  可能な限り、証明書の自動更新を実装してください。 
   +  ACM が発行した証明書に [ACM マネージド型更新と](https://docs.aws.amazon.com/acm/latest/userguide/managed-renewal.html) 統合された AWS のマネージドサービスを使用します。 

1.  認証機関を保有するアカウントへの 
   +  アクセスを追跡するための [CloudTrail ログ](https://docs.aws.amazon.com/privateca/latest/userguide/PcaCtIntro.html) を有効にします。CloudTrail でログファイルの整合性検証を設定して、ログデータの信頼性を検証することを検討してください。 
   +  プライベート CA が発行または取り消した [証明書を一覧表示する](https://docs.aws.amazon.com/privateca/latest/userguide/PcaAuditReport.html) 監査レポートを定期的に生成し、レビューします。これらのレポートは S3 バケットにエクスポートできます。 
   +  プライベート CA をデプロイするときは、証明書失効リスト (CRL) を保存する S3 バケットも確立する必要があります。ワークロードの要件に基づいてこの S3 バケットを設定する場合のガイダンスについては、 [「Planning a certificate revocation list (CRL)」](https://docs.aws.amazon.com/privateca/latest/userguide/crl-planning.html)を参照してください。 

## リソース
<a name="resources"></a>

 **関連するベストプラクティス:** 
+  [SEC02-BP02 一時的な認証情報を使用する](sec_identities_unique.md) 
+ [SEC08-BP01 安全なキー管理を実装する](sec_protect_data_rest_key_mgmt.md)
+  [SEC09-BP04 ネットワーク通信を認証する:](sec_protect_data_transit_authentication.md) 

 **関連するドキュメント:** 
+  [AWS でプライベート証明書インフラストラクチャをホストおよび管理する方法](https://aws.amazon.com/blogs/security/how-to-host-and-manage-an-entire-private-certificate-infrastructure-in-aws/) 
+  [How to secure an enterprise scale ACM Private CA hierarchy for automotive and manufacturing](https://aws.amazon.com/blogs/security/how-to-secure-an-enterprise-scale-acm-private-ca-hierarchy-for-automotive-and-manufacturing/) 
+  [Private CA best practices](https://docs.aws.amazon.com/privateca/latest/userguide/ca-best-practices.html) 
+  [How to use AWS RAM to share your ACM Private CA cross-account](https://aws.amazon.com/blogs/security/how-to-use-aws-ram-to-share-your-acm-private-ca-cross-account/) 

 **関連動画:** 
+  [Activating AWS Certificate Manager Private CA (ワークショップ)](https://www.youtube.com/watch?v=XrrdyplT3PE) 

 **関連する例:** 
+  [Private CA workshop](https://catalog.workshops.aws/certificatemanager/en-US/introduction) 
+  [IOT Device Management Workshop](https://iot-device-management.workshop.aws/en/) (デバイスプロビジョニングを含む) 

 **関連ツール:** 
+  [Plugin to Kubernetes cert-manager to use AWS Private CA](https://github.com/cert-manager/aws-privateca-issuer) 