AWS CloudHSMを起動してみました
2021/07/30
なかなか触る機会のないサービス、CloudHSM。
起動してみました。
手順はユーザーガイドAWS CloudHSM の使用開始を参照しました。
目次
CloudHSMクラスターの作成
[クラスターの作成]からスタートしました。
VPCとAZを指定しました。
本番では複数のAZを指定するべきですが、今回はお試しなので1つだけ。
バックアップは消すからなんでもいいのですが、一応最低の7日にしました。
クライアントEC2の起動
HSMクライアント用のEC2インスタンスを起動しました。
IAMロールにSSMManagedInstanceCoreを設定しているので、キーペアなし、セキュリティグループはVPCのデフォルトにしました。
CloudHSMによってセキュリティグループができましたので、それをEC2インスタンスに追加しました。
セキュリティグループはインバウンド、アウトバウンドともに自分自身がソースで、ポートは2223-2225が許可されていました。
AWS CloudHSM クライアントとコマンドラインツールのインストール
EC2にセッションマネージャで接続して実行しました。
1 2 3 4 |
$ cd $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-latest.el6.x86_64.rpm $ sudo yum install ./cloudhsm-client-latest.el6.x86_64.rpm |
HSM作成
CloudHSMクラスターがとりあえずできたみたいなので、選択して[アクション]-[初期化]を選択しました。
クラスターの初期化
4つの証明書ダウンロードリンクから全部ダウンロードしました。
ローカルのmacOSでプライベートキーを作成しました。
1 2 |
$ openssl genrsa -aes256 -out customerCA.key 2048 |
自己証明書の作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$ openssl req -new -x509 -days 3652 -key customerCA.key -out customerCA.crt Enter pass phrase for customerCA.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) []:JP State or Province Name (full name) []:Some-State Locality Name (eg, city) []: Organization Name (eg, company) []:Yamamugi Organizational Unit Name (eg, section) []: Common Name (eg, fully qualified host name) []: Email Address []: |
クラスターのCSRに署名
1 2 3 4 5 6 |
$ openssl x509 -req -days 3652 -in cluster-n4lndvgamwo_ClusterCsr.csr \ -CA customerCA.crt \ -CAkey customerCA.key \ -CAcreateserial \ -out cluster-n4lndvgamwo_CustomerHsmCertificate.crt |
指定どおりアップロードして、[アップロードと初期化]を実行しました。
クラスターの初期化とアクティブ化
customerCA.crtを/opt/cloudhsm/etc/customerCA.crtにコピーしなければ、なので、適切なS3バケットにアップロードしてEC2からダウンロード。
コピー終了後次のコマンドを実行しました。
172.31.14.232はHSMのIPアドレスです。
1 2 3 4 |
$ sudo /opt/cloudhsm/bin/configure -a 172.31.14.232 Updating server config in /opt/cloudhsm/etc/cloudhsm_client.cfg Updating server config in /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg |
アクティブ化は次のコマンドを実行しました。
1 2 3 4 5 6 7 8 9 10 11 |
$ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg Ignoring E2E enable flag in the configuration file Connecting to the server(s), it may take time depending on the server(s) load, please wait... Connecting to server '172.31.14.232': hostname '172.31.14.232', port 2225... Connected to server '172.31.14.232': hostname '172.31.14.232', port 2225. E2E enabled on server 0(172.31.14.232) aws-cloudhsm> |
listUsersコマンドを実行してみました。
1 2 3 4 5 6 7 8 9 |
aws-cloudhsm>listUsers Users on server 0(172.31.14.232): Number of users found:2 User Id User Type User Name MofnPubKey LoginFailureCnt2FA 1 PRECO admin NO 0 NO 2 AU app_user NO 0 NO |
PRECO ユーザーとして HSM にログインしました。
1 2 3 |
aws-cloudhsm>loginHSM PRECO admin password loginHSM success on server 0(172.31.14.232) |
パスワードを変更しました。
1 2 3 4 5 6 7 8 9 10 11 12 |
aws-cloudhsm>changePswd PRECO admin password *************************CAUTION******************************** This is a CRITICAL operation, should be done on all nodes in the cluster. AWS does NOT synchronize these changes automatically with the nodes on which this operation is not executed or failed, please ensure this operation is executed on all nodes in the cluster. **************************************************************** Do you want to continue(y/n)?y Changing password for admin(PRECO) on 1 nodes changePswd success on server 0(172.31.14.232) |
User TypeがPRECOからCOに変わりました。
1 2 3 4 5 6 7 8 |
aws-cloudhsm>listUsers Users on server 0(172.31.14.232): Number of users found:2 User Id User Type User Name MofnPubKey LoginFailureCnt2FA 1 CO admin NO 0 NO 2 AU app_user NO 0 NO |
初期設定はできたようです。
カスタムキーストアの作成をしてみる
せっかく環境があるので、KMSのカスタムキーストアを作ってみました。
CloudHsmClusterInvalidConfigurationException – CloudHSM cluster must contain active HSMs in at least two Availability Zones.
こんなメッセージで失敗しました。
AZが1つだとダメみたいです。
また今度機会があれば。
削除
HSMを削除しました。
クラスターを削除しました。
クライアント用のEC2も削除しました。
バックアップもと思ったら、7日間削除が保留されるそうです。
さすがHSM。守られてますね。
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。
【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。
【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター3年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
Amazon Linux2のCloud9でPython CDKのモジュールインストール
AMIがCloud9AmazonLinux2-2021-02-02T16-48の …
-
-
Lambda関数で自分自身の環境変数を更新する
Twitterでツイート検索するAPIを試してみるでツイートの取得を重複させない …
-
-
S3バケットポリシーで特定のVPCエンドポイント以外からのリクエストを拒否しつつメンテナンスはしたい
特定のVPCで実行されているEC2のアプリケーションからのリクエストだけを許可し …
-
-
AWS Organizations SCPがリソースベースのポリシーには影響しないことを確認
AWS Organizations SCPで許可ポリシーの設定をし継承の関係を確 …
-
-
kintoneでEveryoneに権限が設定されているアプリをAWS Lambdaで一括チェックする
こないだ、kintone Cafeでユーザーが自由に作成している環境だと、どんな …
-
-
AWS Toolkit for EclipseからLambda関数を直接作成できずにMavenでパッケージ化して作成
AWS Toolkit for EclipseからLambda関数を直接作成 チ …
-
-
Amazon Connectから問い合わせ追跡レコード(CTR)をエクスポート
Amazon Connectから発信した電話に出たのか、出なかったのかを確認した …
-
-
別アカウントのVPCからAWS PrivateLinkを使う
やったことないのでやってみるシリーズです。 VPC エンドポイントサービス (A …
-
-
EC2 Amazon Linux 2 にAmazon LinuxからWordPressを移行
このブログを新しいインスタンスに移行することにしました。 2015年5月にAma …
-
-
AWS CodeStarのプロジェクトテンプレートLambda+Pythonによって生成されるもの
勉強会のデモで、AWS CodeStarのプロジェクトテンプレートLambda+ …