Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWS CLIでCMKを沢山作ってみたら 困ったこと
Search
Yuki_Kurono
July 25, 2022
Programming
1
270
AWS CLIでCMKを沢山作ってみたら 困ったこと
Yuki_Kurono
July 25, 2022
Tweet
Share
More Decks by Yuki_Kurono
See All by Yuki_Kurono
今年のre:inventから学ぶこと
yuki_kurono
0
23
re_invent 2023事前勉強会
yuki_kurono
0
52
CloudFormationの運用が 辛くならない方法を本気で考えてみた
yuki_kurono
0
170
CloudFormationで登場したForEachをちゃんと理解してみる
yuki_kurono
0
550
Turnstileのウィジェット モードとは何者か
yuki_kurono
0
340
CodeGuru Security ってなんだ?
yuki_kurono
0
800
えるしってるか CloudFrontはWAFがあっても カスタムエラーレスポンスを返せる
yuki_kurono
0
300
Cloudflare初心者がIaCから基本構成を学んでみた
yuki_kurono
1
490
Terraformのnull_resource ってなに?aws cli が実行できるらしい
yuki_kurono
0
1.2k
Other Decks in Programming
See All in Programming
複数ドメインに散らばってしまった画像…! 運用中のPHPアプリに後からCDNを導入する…!
suguruooki
0
430
アプリを起動せずにアプリを開発して品質と生産性を上げる
ishkawa
0
290
PHPでお金を扱う時、終わりのない 謎の1円調査の旅にでなくて済む方法
nakka
3
1.2k
Go1.24で testing.B.Loopが爆誕
kuro_kurorrr
0
160
Let's Take a Peek at PHP Parser 5.x!
inouehi
0
100
生成AIの使いどころ
kanayannet
0
100
体得しよう!RSA暗号の原理と解読
laysakura
3
530
パスキーのすべて / 20250324 iddance Lesson.5
kuralab
0
120
バックエンドNode.js × フロントエンドDeno で開発して得られた知見
ayame113
5
1.3k
家族・子育て重視/沖縄在住を維持しながらエンジニアとしてのキャリアをどのように育てていくか?
ug
0
240
remix + cloudflare workers (DO) docker上でいい感じに開発する
yoshidatomoaki
0
120
データベースエンジニアの仕事を楽にする。PgAssistantの紹介
nnaka2992
9
4.2k
Featured
See All Featured
Done Done
chrislema
183
16k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Making the Leap to Tech Lead
cromwellryan
133
9.2k
Unsuck your backbone
ammeep
670
57k
Into the Great Unknown - MozCon
thekraken
36
1.7k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Docker and Python
trallard
44
3.3k
It's Worth the Effort
3n
184
28k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.1k
Scaling GitHub
holman
459
140k
The Cost Of JavaScript in 2023
addyosmani
48
7.6k
The Language of Interfaces
destraynor
157
24k
Transcript
AWS CLIでCMKを沢山作ってみたら 困ったこと 黒野 雄稀 JAWS-UG CLI専門支部 #270R 2022/07/24
自己紹介 名前 黒野 雄稀 AWS歴 ・約3年 ・2022 APN ALL
AWS Certifications Engineer 所属 アイレット株式会社 普段の業務 ・基幹系インフラ構築 ・システム運用構築
背景 CloudTrail皆さん使っていますか? 今回は複数のAWSアカウント(約16アカウント)でCloudTrailの有効化に伴い、 CMKの作成が必要となりました。 コンソールで作るのは流石に大変。。ということでAWS CLIを使ってCMKを作成 してみました。
対象となるリージョン • 東京 • バージニア北部 • シンガポール • フランクフルト •
北京
スクリプト概要
aws-vault設定 ここからスクリプトの中からポイントの部 分に解説を入れていきます。 ※スクリプト全体はQiitaに記載しておき ます。 #スイッチロールの設定を行う。 export SWICHROLE=$ROLE echo $SWICHROLE
shopt -s expand_aliases alias av='aws-vault exec $SWICHROLE --no-session --' #結果出力先ファイルの設定を行う。 export OUTPUT=./result-kms/create/${SWICHROLE}-kms-result-${NOW}.txt #アカウントIDの取得を行う。 ACCOUNT=$(av aws sts get-caller-identity | jq -r .Account) コマンド
キーポリシー ファイル作成 ベースとなるポリシーファイルを 用意して、固有情報(アカウントID、リー ジョン)だけ書き換えを行っています。 echo -e "\U2705KMSキーポリシー作成 " cp
./base-key-policy.json ./key-policy-${SWICHROLE}.json sudo sed -i -e "s/ap-northeast-1/${REGION}/" ./key-policy-${SWICHROLE}.json sudo sed -i -e "s/12345678910/${ACCOUNT}/" ./key-policy-${SWICHROLE}.json コマンド
CMK、エイリアスの 作成 上記で作成した、キーポリシーを元に CMKの作成とエイリアスの作成を行う。 #上記で作成したキーポリシーを使用して、 CKMの作成を行う。 echo -e "\U2705KMSキー作成" KEYID=$(av
aws kms create-key --key-usag ENCRYPT_DECRYPT \ --origin AWS_KMS --policy file://key-policy-${SWICHROLE}.json \ --region $REGION | jq -r .KeyMetadata.KeyId) echo -e "\U2705 KEYID:${KEYID}" #作成したCKMに対して、エイリアスの作成を行う。 echo -e "\U2705エイリアス作成" av aws kms create-alias --alias-name alias/$KEYNAME \ --target-key-id $KEYID --region $REGION コマンド
作成したCMK、 エイリアスの確認 最後に作成したCMKのエイリアスと設定 内容を確認する。 #作成したCKMにエイリアスが作成されて、適切な設定が行われているか確認する。 echo -e "\U2705KMSキー確認" av aws
kms list-aliases --key-id ${KEYID} > $OUTPUT コマンド 実行結果
しかしここで失敗する。。 ・フランクフルトリージョンまで上手くいっていたが、中国で何故かスクリプトが失 敗する。。 ・調べてみるとキーポリシーの作成で以下の様な記述がありました。 { "Version": "2012-10-17", "Id": "Key policy
created by CloudTrail", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456578910:root" }, "Action": "kms:*", "Resource": "*" },
馴染のある方、勘のいい方はお気づきかもしれません。 そう、AWS中国のARNはarn:awsではなくarn:aws-cnでした。 なので、以下の様な処理を追加する必要がありました。 if [ $REGION = "cn-north-1" ]; then
sudo sed -i -e "s/arn:aws/arn:aws-cn/" ./key-policy-${SWICHROLE}.json fi
まとめ • TerraformやCFnでも同じような、落とし穴があると思いますので注意が必要だったなと 思いました。 ◦ 中国など慣れない環境は事前調査大事 • シェルスクリプト自体の知識が浅く、エラーハンドリングが甘いので深堀し ていきた
い。
参考 Qiita: https://qiita.com/kurono/items/b 3362e16a3a396b9b2a7
おまけ 以下の様なコマンドを使用するとbashでユニコードを扱うことができます。 作業してるとテンションが上がります。 echo -e "\U2705KMSキー確認" コマンド 実行結果
ご清聴ありがとうございま した