ã¨ã³ã¿ã¼ãã©ã¤ãºã¯ã©ã¦ãé¨ã®å±±ä¸(ç¥)ã§ãã
æè¿ã200åãããã®ã¢ã«ã¦ã³ãã§AWS Configãæå¹åããã¦ããã確èªããå¿ è¦ããã£ãããã ç°¡åãªã¹ã¯ãªãããä½ã£ã¦ç¢ºèªãã¦ã¿ã¾ããã æ¬ããã°ã§ã¯ããã®å 容ã«ã¤ãã¦ãç´¹ä»ãã¾ãã
ä»åã®ç°å¢
ä»åã¯ã以ä¸ã®ãããªæ¡ä»¶ä¸ã§ç¢ºèªãè¡ãã¾ããã
- è¸ã¿å°ã¢ã«ã¦ã³ãããåã¢ã«ã¦ã³ãã¸ã¹ã¤ãããã¼ã«ãè¡ããConfigæå¹åã確èªãã
- åã¢ã«ã¦ã³ãã®ã¹ã¤ãããã¼ã«å
ã®ãã¼ã«åã¯åã
- è¸ã¿å°ã¢ã«ã¦ã³ãã«ã¯MFAãè¨å®ããã¦ãã
- åã¢ã«ã¦ã³ãã¯Organizationsã®çµç¹ã«æå±ãã¦ãã
- 確èªãããªã¼ã¸ã§ã³ã¯1ãªã¼ã¸ã§ã³ã®ã¿ï¼ä»åã¯æ±äº¬ãªã¼ã¸ã§ã³ï¼
ä¸å³ã®ãããªåä½ã¤ã¡ã¼ã¸ã¨ãªãã¾ãã

äºåæºå
ã¾ãã¯äºåæºåã¨ãã¦ã以ä¸ã宿½ãã¾ãã
- ã¢ã«ã¦ã³ãä¸è¦§ãåå¾ãã
- è¸ã¿å°ã¢ã«ã¦ã³ãã®ä¸æèªè¨¼æ å ±ãåå¾ãã
- ã.aws/configãã«profileã追å ãã
ã¢ã«ã¦ã³ãä¸è¦§ãåå¾ãã
以ä¸ã³ãã³ããå®è¡ãã¾ãã profile ã«ã¯ãOrganizationsã®ç®¡çã¢ã«ã¦ã³ãã® profile ãæå®ãã¾ãã
aws organizations list-accounts --query "Accounts[].[Id]" --output text --profile xxxxxx >>./account.txt
account.txtã®ä¸èº«ã¯ã以ä¸ã®ãµã³ãã«ã®ãããªã1è¡ã«ã¤ã1ã¢ã«ã¦ã³ããè¨è¼ããããªã¹ãã¨ãªãã¾ãã
111111111111 222222222222 333333333333 444444444444 ã» ã» ã»
è¸ã¿å°ã¢ã«ã¦ã³ãã®ä¸æèªè¨¼æ å ±ãåå¾ãã
以ä¸ã³ãã³ããå®è¡ããè¸ã¿å°ã¢ã«ã¦ã³ãã®ä¸æèªè¨¼æ å ±ãåå¾ãã¾ãã ã¹ã¯ãªããã§è¤æ°ã¢ã«ã¦ã³ãã®ç¢ºèªãèªååããéã«ãMFAã³ã¼ãã®æåå ¥åãæ±ããããªãããã«ããããã§ãã
aws sts get-session-token --serial-number <MFAããã¤ã¹ã®ARN> --token-code <MFAãã¼ã¯ã³ã³ã¼ã>
以ä¸ã®ãµã³ãã«ã®ãããªã䏿èªè¨¼æ å ±ãåºåããã¾ãã æå¹æéããããããæ³¨æãã ãããï¼Expirationã«è¨è¼ã®æå»ã¾ã§å©ç¨å¯è½ï¼
{
"Credentials": {
"AccessKeyId": "ASIA574ÃÃÃÃÃÃÃÃS5UOKBD",
"SecretAccessKey": "Enqe7K7Oj2VKVMÃÃÃÃÃÃÃÃÃÃÃthvYSBf86AO/H",
"SessionToken": "FwoGZXIvYXdzEKX//////////wEaDG4IBEijFDaVHbCUMiKGAYqcEoXb7SEIV7yf3LTuÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃp8sLWDg7lj1Ue8jQkWAmZ8/IEtcQDSL88kSY4lExWYBAmMmdbSzkvAeo5fX7np7gPG5O5TxaxFhBCnnI/vbmo7MHZWOo+EqulN0iRm60Y3gbVKJShyJoGMijoyK/mZ/jc2wP4Uoay72yNeJUJcOr5TdZ2uhyf7yTOZomLT9GsE3Xb"
"Expiration": "2024-05-28T21:31:35+00:00"
}
}
åå¾ããæ å ±ãã.aws/credentialãã«è¿½è¨ãã¾ãã
[bastion] aws_access_key_id = ASIA574ÃÃÃÃÃÃÃÃS5UOKBD aws_secret_access_key = Enqe7K7Oj2VKVMÃÃÃÃÃÃÃÃÃÃÃthvYSBf86AO/H aws_session_token = FwoGZXIvYXdzEKX//////////wEaDG4IBEijFDaVHbCUMiKGAYqcEoXb7SEIV7yf3LTuÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃp8sLWDg7lj1Ue8jQkWAmZ8/IEtcQDSL88kSY4lExWYBAmMmdbSzkvAeo5fX7np7gPG5O5TxaxFhBCnnI/vbmo7MHZWOo+EqulN0iRm60Y3gbVKJShyJoGMijoyK/mZ/jc2wP4Uoay72yNeJUJcOr5TdZ2uhyf7yTOZomLT9GsE3Xb
ã.aws/configãã«profileã追å ãã
è¸ã¿å°ç¨ãã¹ã¤ãããã¼ã«ç¨ã®profileãã.aws/configãã«è¿½è¨ãã¾ãã
[profile bastion] region = ap-northeast-1 output = json [profile xxxxxxxxxxxx] region = ap-northeast-1 ourput = json role_arn = arn:aws:iam::xxxxxxxxxxxx:role/SampleRole source_profile = bastion
ã¹ã¯ãªãããå®è¡
äºåæºåãåºæ¥ãããã¹ã¯ãªãããå®è¡ãã¾ãã
ä»å使ããã¹ã¯ãªãã
ä»å使ããã¹ã¯ãªããã¯ä»¥ä¸ã§ãã ãaccount.txtãã¨ã.aws/configãã¯ã¹ã¯ãªãããã¡ã¤ã«ã®ç¸å¯¾ãã¹ã§è¨è¼ãã¦ãã¾ãã ãæå ã®ç°å¢ã§å®è¡ãããå ´åã¯ããã¹ãç°å¢ã«åããã¦é©å®ä¿®æ£ãã ããã
#!/bin/bash FILE_NAME=./account.txt while read PROFILE do sed -i ./.aws/config -e "s/xxxxxxxxxxxx/$PROFILE/g" sleep 1 RECORDING=$(aws configservice describe-configuration-recorder-status --profile ${PROFILE} --query 'ConfigurationRecordersStatus[].recording' --output text) sleep 10 if [ -z "$RECORDING" ]; then RECORDING="false" fi echo "${PROFILE},${RECORDING}" >> config.csv sed -i ./.aws/config -e "s/$PROFILE/xxxxxxxxxxxx/g" sleep 1 done < ${FILE_NAME}
ã¹ã¯ãªããã®ç´°ããå 容ã«ã¤ãã¦ä»¥ä¸ã§è§£èª¬ãã¾ãã
ç¹°ãè¿ãé¨åã®å¦ç
FILE_NAME=./account.txt while read PROFILE do ã» ã» ã» done < ${FILE_NAME}
ãaccount.txtããã1è¡ãã¤ã¢ã«ã¦ã³ãçªå·ãèªã¿è¾¼ã¿ã¾ããã¢ã«ã¦ã³ãã®æ°ã ãå¦çãç¹°ãè¿ãã¾ãã
profileã®å¤æ
sed -i ./.aws/config -e "s/xxxxxxxxxxxx/$PROFILE/g"
ã./.aws/configãã®profileã®xxxxxxxxxxxxã®é¨åãããaccount.txtãã®ã¢ã«ã¦ã³ãçªå·ã«å¤æãã¾ãã
# 夿å [profile xxxxxxxxxxxx] region = ap-northeast-1 ourput = json role_arn = arn:aws:iam::xxxxxxxxxxxx:role/SampleRole source_profile = bastion # å¤æå¾ [profile 111111111111] region = ap-northeast-1 ourput = json role_arn = arn:aws:iam::111111111111:role/SampleRole source_profile = bastion
ã¹ã¤ãããã¼ã«å ã®ãã¼ã«åãå ¨ã¢ã«ã¦ã³ãã§å ±éã®å ´åãã¢ã«ã¦ã³ãçªå·ã夿ããã°ãprofileã使ãã¾ãããã¨ãå¯è½ã§ãã äºãå ¨ã¢ã«ã¦ã³ãåã®profileãç¨æããå¿ è¦ããªããããã¢ã«ã¦ã³ãæ°ãå¤ãå ´åã¯ä½æ¥ãå¹ççã«ãªãã¾ãã
Configæå¹åã®ç¢ºèª
RECORDING=$(aws configservice describe-configuration-recorder-status --profile ${PROFILE} --query 'ConfigurationRecordersStatus[].recording' --output text) sleep 10 if [ -z "$RECORDING" ]; then RECORDING="false" fi
AWS Configãæå¹åããã¦ãããã©ãã確èªãã¾ãããaws configservice describe-configuration-recorder-statusãã®åºåçµæã¯ãConfigãæå¹åããã¦ããå ´åã¨ããã¦ããªãå ´åã§ããããã以ä¸ã®ããã«ãªãã¾ãã
# Configãæå¹åããã¦ããå ´å
{
"ConfigurationRecordersStatus": [
{
"name": "configuration-recorder-ap-northeast-1",
"lastStartTime": "2020-08-12T12:30:31.014000+09:00",
"recording": true,
"lastStatus": "SUCCESS",
"lastStatusChangeTime": "2024-05-28T18:30:41.578000+09:00"
}
]
}
# Configãæå¹åããã¦ããªãå ´å
{
"ConfigurationRecordersStatus": []
}
ãã®ãããConfigãæå¹åããã¦ããå ´åãä¸è¿°ã®å¤æ° RECORDING ã®å¤ã¯ãtrueãã¨ãªããConfigãæå¹åããã¦ããªãå ´åãRECORDING ã®å¤ã¯ null ã¨ãªãã¾ãã null ã ã¨å°ãåããã«ããã®ã§ã以ä¸ã®å¦çã§ãRECORDING ã®å¤ã nullã ã£ãéã«ã¯ããfalseãã¨ããå¤ãä»£å ¥ãã¦ãã¾ãã
if [ -z "$RECORDING" ]; then RECORDING="false" fi
çµæãCSVã«æ¸ãè¾¼ã¿
echo "${PROFILE},${RECORDING}" >> config.csv
PROFILE夿°ã«ã¯ã¢ã«ã¦ã³ãçªå·ãRECORDING夿°ã«ã¯true ã false ã®å¤ãå ¥ã£ã¦ãã¾ãã ãã®ãããCSVã®ä¸èº«ã¯ä»¥ä¸ã®ãããªã¤ã¡ã¼ã¸ã¨ãªãã¾ãã
111111111111,true 222222222222,false 333333333333,false 444444444444,true ã» ã» ã»
profileãå ã«æ»ã
sed -i ./.aws/config -e "s/$PROFILE/xxxxxxxxxxxx/g"
ç¹°ãè¿ãå¦çã®ããã«ãã.aws/configãã®profileã®ã¢ã«ã¦ã³ãçªå·ããå度ãxxxxxxxxxxxxãã«æ»ãã¾ãã
# 夿å [profile 111111111111] region = ap-northeast-1 ourput = json role_arn = arn:aws:iam::111111111111:role/SampleRole source_profile = bastion # å¤æå¾ [profile xxxxxxxxxxxx] region = ap-northeast-1 ourput = json role_arn = arn:aws:iam::xxxxxxxxxxxx:role/SampleRole source_profile = bastion
ã¡ãã£ã¨ä¸æ ¼å¥½ã§ãããããããã£ã¡ã ã使ããã®ã§ããªãã§ãããã·ã³ãã«ãªä½ãã«ãããã£ãã®ã§ãããã§è¯ãã¨ãã¾ããã
以ä¸ãè¤æ°ã¢ã«ã¦ã³ãã®Configæå¹åãã§ãã¯ã§ããã
AWSã®å©ç¨æéãé·ãã¢ã«ã¦ã³ãæ°ãå¤ãçµç¹ã§ã¯ãAWS Configãæå¹åããã¦ããã¢ã«ã¦ã³ãã¨ããã§ãªãã¢ã«ã¦ã³ããå
¥ãæ··ãã£ã¦ã確èªãé¢åãªã±ã¼ã¹ããããã¨æãã¾ãã
ãã®ãããªæã«ãæ¬ããã°ããå½¹ã«ç«ã¦ã°å¹¸ãã§ãã
å±±ä¸ ç¥æ¨¹(å·çè¨äºã®ä¸è¦§)
2021å¹´11æä¸éå ¥ç¤¾ãåè·ã§ã¯æ ã·ã¹ã¨ãã¦ç¤¾å ãããã¯ã¼ã¯ã®æ´æ¹ãéç¨ã«æºãã£ã¦ãã¾ããã 2023 Japan AWS All Certifications Engineersã