Memo/AmazonWebServices/awscli/IAM

http://dexlab.net/pukiwiki/index.php?Memo%2FAmazonWebServices%2Fawscli%2FIAM
 

IAM


access keyの一括処理

  • AWS APIの制限のため、適切にsleepを入れる必要がある。
  • iam user一覧
    1. AWS_PROFILE=dev
    2. aws iam list-users --profile $AWS_PROFILE > ${AWS_PROFILE}.list-users.$(date +%Y%m%d).json
  • iam userのaccess key一覧
    1. for user in $(cat ${AWS_PROFILE}.list-users.$(date +%Y%m%d).json | jq -r '.Users[].UserName');do \
    2.   echo "-- $user"; \
    3.   aws iam list-access-keys --user-name $user --profile $AWS_PROFILE > ${AWS_PROFILE}.access-keys.$user.json ;\
    4. done
  • 有効なaccess keyを無効化
    1. for keyfile in $(ls ${AWS_PROFILE}.access-keys*.json);do \
    2.   echo "-- $keyfile"; \
    3.   cat $keyfile | jq -r '.AccessKeyMetadata[] | if .Status == "Active" then .AccessKeyId,.UserName else empty end' \
    4.     | xargs -t -n 2 bash -c 'aws iam update-access-key --status Inactive --access-key-id $0 --user-name $1 --profile '$AWS_PROFILE ; \
    5.   sleep 5; \
    6. done
  • 無効化したaccess key一覧
    1. for keyfile in $(ls ${AWS_PROFILE}.access-keys*.json);do \
    2.   echo "-- $keyfile"; \
    3.   cat $keyfile | jq -r '.AccessKeyMetadata[] | if .Status == "Inactive" then .AccessKeyId else empty end'; \
    4. done
  • 無効化したaccess keyを削除
    1. for keyfile in $(ls ${AWS_PROFILE}.access-keys*.json);do \
    2.   echo "-- $keyfile"; \
    3.   cat $keyfile | jq -r '.AccessKeyMetadata[] | if .Status == "Inactive" then .AccessKeyId,.UserName else empty end' \
    4.     | xargs -t -n 2 bash -c 'aws iam delete-access-key --access-key-id $0 --user-name $1 --profile '$AWS_PROFILE ; \
    5.   sleep 5; \
    6. done

SSL証明書を管理

※現在はACMでSSL証明書を管理できる。IAMは非推奨

  • IAMにアップロードされているSSL証明書の一覧
    1. aws iam list-server-certificates
    2.  
    3. {
    4.     "ServerCertificateMetadataList": [
    5.         {
    6.             "Path": "/",
    7.             "Arn": "arn:aws:iam::000000000000:server-certificate/example.com",
    8.             "ServerCertificateId": "XXXXXXXXXXXXXXXXXXXXX",
    9.             "ServerCertificateName": "example.com",
    10.             "UploadDate": "2014-01-02T03:40:50Z"
    11.         }
    12.     ]
    13. }
  • ELBのリスナーで使用されているSSL証明書の一覧
    1. aws elb describe-load-balancers \
    2.  --query "LoadBalancerDescriptions[].[LoadBalancerName,ListenerDescriptions[].Listener[].SSLCertificateId]" \
    3.  --region us-east-1
    4.  
    5. [
    6.     [
    7.         "example.com",
    8.         [
    9.             "arn:aws:iam::000000000000:server-certificate/example.com"
    10.         ]
    11.     ]
    12. ]
  • IAMにSSL証明書をアップロード。名前は「ドメイン.期限」としておけば分かりやすい。ホームディレクトリにファイルがある場合は file://~/file.key 。ARNをメモしておく
    1. aws iam upload-server-certificate \
    2.   --server-certificate-name example.com.20170101 \
    3.   --certificate-body file://example.com.20170101.crt \
    4.   --private-key file://example.com.20170101.key.nopass \
    5.   --certificate-chain file://certificate_chain_file.crt
  • ELBにHTTPSリスナーを追加する場合
    1. ARN="arn:aws:iam::012345678901:server-certificate/production/newCert"
    2. aws --region ap-northeast-1 \
    3.  elb create-load-balancer-listeners \
    4.  --load-balancer-name elb01 \
    5.  --listeners Protocol=HTTPS,LoadBalancerPort=443,InstanceProtocol=HTTP,InstancePort=80,SSLCertificateId=$ARN
  • ELBのSSL証明書を更新する場合
    1. ARN="arn:aws:iam::012345678901:server-certificate/production/newCert"
    2. aws --region ap-northeast-1 \
    3.  elb set-load-balancer-listener-ssl-certificate \
    4.  --load-balancer-name elb01 \
    5.  --load-balancer-port 443 \
    6.  --ssl-certificate-id $ARN
  • IAMからSSL証明書を削除する場合。ELBで使用中でも削除できるので注意
    1. aws iam delete-server-certificate \
    2.   --server-certificate-name example.com

user, group, policy管理

    1. AWS_PROFILE=development
    2. AWS_USER=user01@example.com
    3.  
    4. # readonlyグループの作成
    5. aws iam create-group \
    6.  --group-name readonly \
    7.  --profile $AWS_PROFILE
    8.  
    9. # ReadOnlyAccess権限を付与
    10. aws iam attach-group-policy \
    11.  --group-name readonly \
    12.  --policy-arn "arn:aws:iam::aws:policy/ReadOnlyAccess" \
    13.  --profile $AWS_PROFILE
    14.  
    15. # ユーザをグループに追加
    16. aws iam add-user-to-group \
    17.  --group-name readonly \
    18.  --user-name $AWS_USER \
    19.  --profile $AWS_PROFILE
    20.  
    21. # ユーザをグループから削除
    22. aws iam remove-user-from-group \
    23.  --group-name admin \
    24.  --user-name $AWS_USER \
    25.  --profile $AWS_PROFILE
    26.  
    27. # 現在のユーザがどのグループに入っているか
    28. aws iam list-groups-for-user \
    29.  --user-name $AWS_USER \
    30.  --profile $AWS_PROFILE
    31.  
    32. {
    33.     "Groups": [
    34.         {
    35.             "Path": "/",
    36.             "CreateDate": "2017-08-03T01:02:03Z",
    37.             "GroupId": "XXXXXXXX",
    38.             "Arn": "arn:aws:iam::123456789:group/readonly",
    39.             "GroupName": "readonly"
    40.         }
    41.     ]
    42. }

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-04-27 (金) 12:51:27 (55d)