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
300
1
Share
AWS CLIでCMKを沢山作ってみたら 困ったこと
Yuki_Kurono
July 25, 2022
More Decks by Yuki_Kurono
See All by Yuki_Kurono
Terraform(IaC)と実環境の乖離どうしていますか?
yuki_kurono
0
10
今年のre:inventから学ぶこと
yuki_kurono
0
93
re_invent 2023事前勉強会
yuki_kurono
0
91
CloudFormationの運用が 辛くならない方法を本気で考えてみた
yuki_kurono
0
300
CloudFormationで登場したForEachをちゃんと理解してみる
yuki_kurono
0
810
Turnstileのウィジェット モードとは何者か
yuki_kurono
0
660
CodeGuru Security ってなんだ?
yuki_kurono
0
1.1k
えるしってるか CloudFrontはWAFがあっても カスタムエラーレスポンスを返せる
yuki_kurono
0
420
Cloudflare初心者がIaCから基本構成を学んでみた
yuki_kurono
1
610
Other Decks in Programming
See All in Programming
Feature Toggle は捨てやすく使おう
gennei
0
390
AI時代の脳疲弊と向き合う ~言語学としてのPHP~
sakuraikotone
1
1.6k
条件判定に名前、つけてますか? #phperkaigi #c
77web
2
880
Nuxt Server Components
wattanx
0
220
20260313 - Grafana & Friends Taipei #1 - Kubernetes v1.36 的開發雜記:那些困在 Alpha 加護病房太久的 Metrics
tico88612
0
240
[PHPerKaigi 2026]PHPerKaigi2025の企画CodeGolfが最高すぎて社内で内製して半年運営して得た内製と運営の知見
ikezoemakoto
0
310
RailsのValidatesをSwift Macrosで再現してみた
hokuron
0
140
モックわからないマン卒業記 ~振る舞いを起点に見直した、フロントエンドテストにおけるモックの使いどころ~
tasukuwatanabe
3
430
Agentic AI: Evolution oder Revolution
mobilelarson
PRO
0
220
Claude Code Skill入門
mayahoney
0
450
AI 開発合宿を通して得た学び
niftycorp
PRO
0
180
Redox OS でのネームスペース管理と chroot の実現
isanethen
0
480
Featured
See All Featured
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
230
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.1k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
660
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
150
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.2k
Everyday Curiosity
cassininazir
0
180
BBQ
matthewcrist
89
10k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
190
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キー確認" コマンド 実行結果
ご清聴ありがとうございま した