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
260
AWS CLIでCMKを沢山作ってみたら 困ったこと
Yuki_Kurono
July 25, 2022
Tweet
Share
More Decks by Yuki_Kurono
See All by Yuki_Kurono
re_invent 2023事前勉強会
yuki_kurono
0
37
CloudFormationの運用が 辛くならない方法を本気で考えてみた
yuki_kurono
0
140
CloudFormationで登場したForEachをちゃんと理解してみる
yuki_kurono
0
460
Turnstileのウィジェット モードとは何者か
yuki_kurono
0
260
CodeGuru Security ってなんだ?
yuki_kurono
0
650
えるしってるか CloudFrontはWAFがあっても カスタムエラーレスポンスを返せる
yuki_kurono
0
250
Cloudflare初心者がIaCから基本構成を学んでみた
yuki_kurono
1
460
Terraformのnull_resource ってなに?aws cli が実行できるらしい
yuki_kurono
0
1.1k
Hashicorp VaultでAWSクレデンシャルの管理を楽にしたい
yuki_kurono
0
510
Other Decks in Programming
See All in Programming
情報漏洩させないための設計
kubotak
3
320
PHPで学ぶプログラミングの教訓 / Lessons in Programming Learned through PHP
nrslib
3
300
どうして手を動かすよりもチーム内のコードレビューを優先するべきなのか
okashoi
3
170
PHPで作るWebSocketサーバー ~リアクティブなアプリケーションを知るために~ / WebSocket Server in PHP - To know reactive applications
seike460
PRO
2
510
create_tableをしただけなのに〜囚われのuuid編〜
daisukeshinoku
0
270
開発者とQAの越境で自動テストが増える開発プロセスを実現する
92thunder
1
190
useSyncExternalStoreを使いまくる
ssssota
6
1.2k
今年一番支援させていただいたのは認証系サービスでした
satoshi256kbyte
1
260
Stackless и stackful? Корутины и асинхронность в Go
lamodatech
0
830
Keeping it Ruby: Why Your Product Needs a Ruby SDK - RubyWorld 2024
envek
0
190
Beyond ORM
77web
7
950
わたしの星のままで一番星になる ~ 出産を機にSIerからEC事業会社に転職した話 ~
kimura_m_29
0
180
Featured
See All Featured
Statistics for Hackers
jakevdp
796
220k
Building Your Own Lightsaber
phodgson
103
6.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
28
900
Adopting Sorbet at Scale
ufuk
73
9.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
The Cost Of JavaScript in 2023
addyosmani
45
7k
Optimising Largest Contentful Paint
csswizardry
33
3k
Thoughts on Productivity
jonyablonski
67
4.4k
The Invisible Side of Design
smashingmag
298
50k
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
Facilitating Awesome Meetings
lara
50
6.1k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
520
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キー確認" コマンド 実行結果
ご清聴ありがとうございま した