今回は、SOA学習を進める中で初めて知った「ACM for Nitro Enclaves」について簡単に整理してみたいと思います。
ACM for Nitro Enclaves とは?
ACM for Nitro Enclaves は、AWS Nitro Enclaves を使って Amazon EC2 インスタンスで実行されているウェブアプリケーションおよびサーバーで、パブリックおよびプライベート SSL/TLS 証明書を使用できるようにする Enclaves アプリケーションです。
(2020年10月のアップデートから抜粋)
要は、ACMで作成した証明書をEC2で直接利用できるようになりましたよ、ということですね(たぶん)。
AWS Nitro System については詳細追いかけれてませんが、クラスメソッド臼田さんの記事(下記)が re:Invent 2020 のレポートしてアップされているので参考になりそうです。(理解できたとは言ってません…笑)
利用の流れ
せっかくなので、ユーザーガイドで ACM for Nitro Enclaves の使い方について見てみました。
Nitro Enclaves application: AWS Certificate Manager for Nitro Enclaves – AWS|Nitro Enclaves ユーザーガイド
ざっくりとした流れは以下の通り。
- 1.ACM で証明書を作成
- 2.EC2 インスタンスを起動
- 3.IAM ロールを作成
- └証明書への関連付け
- └ポリシーの適用
- 4.IAM ロールをEC2 にアタッチ
- 5.Nginx を設定
個人的に気になった点を以下に記載します。
サポート範囲
- Nitro EnclavesのACMは、プライベート証明書とパブリック証明書の両方をサポートする
- Linuxインスタンスでのみ使用でき、Windowsインスタンスはサポートしていない
- Nginx のみサポートしている
インスタンス起動時に “–enclave-options” オプションを指定して有効化
ユーザーガイド内のサンプルコマンドにあるように、”run-instances” コマンドを実行する際のオプション指定により Nitro Enclaves を有効化するようです。
aws ec2 run-instances \
--image-id ami_id \
--count 1 \
--instance-type supported_instance_type \
--key-name your_key_pair \
--enclave-options 'Enabled=true'
IAM ロールと証明書の関連付けには “associate-enclave-certificate-iam-role” コマンドを利用
同じくユーザーガイド内のサンプルコマンドにあるように、以下のようなコマンドにて関連付けを行います。
aws ec2 associate-enclave-certificate-iam-role \
--region region \
--certificate-arn certificate_ARN \
--role-arn role_ARN
Nginx の設定ファイルを準備する
Nginx 用の設定ファイルとして、下記2つのファイルを準備する必要があります。詳細内容は(ユーザーガイド参照)
- /etc/nitro_enclaves/acm.yaml
- /etc/nginx/nginx.conf
終わりに
まとめることは特にありませんが、ACM for Nitro Enclaves についてなんとなく、理解が進んだのでヨシとします。
以上です。最後まで読んでいただきありがとうございました。
