AWS CLIでサービスの各種コマンドを動かしてみる(IAM編4: アカウント・パスワード・アクセスキー)

2013.08.30

不定期と言いながら連投しまくりで申し訳ありませんw m(_ _)m (書き溜めていたものでもあったので、このタイミングで一挙放出しとります)

IAM編第4弾はアカウントやパスワード、アクセスキーに関するコマンドです。

アカウントエイリアス(acount-alias)に関する操作

管理コンソール上で言うと、ちょうとこの部分の別名(エイリアス)を生成するコマンドになります。利用開始直後は数字の羅列となっているこの部分を、分かり易い別名にする操作ですね。

iam-account-alias-1

 

create-account-alias

アカウントエイリアスを作成します。実行してみましょう。

$ aws iam create-account-alias --account-alias aws-alias-login

実行後管理コンソールで内容を確認してみます。更新されていますね。

iam-account-alias-2.png

 

list-account-aliases

AWSアカウントに紐付くエイリアスの一覧を取得します。

$ aws iam list-account-aliases
[
    "aws-alias-login"
]

 

delete-account-alias

アカウントエイリアス情報を削除します。この操作を行うと、create-account-aliasを行う前の状態に戻る形となります。

$ aws iam delete-account-alias --account-alias aws-alias-login

アカウントサマリ(acount-summary)に関する操作

 

get-account-summary

アカウントエンティティに関する利用状況とIAMに関する各種情報の設定可能件数を取得します。各種項目値に関しては下記APIリファレンスを参照。

$ aws iam get-account-summary 
{
    "SummaryMap": {
        "AccessKeysPerUserQuota": 2, 
        "AssumeRolePolicySizeQuota": 2048, 
        "UsersQuota": 5000, 
        "GroupsPerUserQuota": 10, 
        "Users": 8, 
        "Roles": 4, 
        "MFADevices": 0, 
        "InstanceProfilesQuota": 100, 
        "AccountMFAEnabled": 0, 
        "ServerCertificates": 0, 
        "UserPolicySizeQuota": 2048, 
        "RolePolicySizeQuota": 10240, 
        "MFADevicesInUse": 0, 
        "GroupsQuota": 100, 
        "Groups": 8, 
        "InstanceProfiles": 5, 
        "GroupPolicySizeQuota": 5120, 
        "SigningCertificatesPerUserQuota": 2, 
        "ServerCertificatesQuota": 10, 
        "RolesQuota": 250
    }, 
    "ResponseMetadata": {
        "RequestId": "a4a0d146-e53b-11e2-a0fa-2ba949bc0794"
    }
}

パスワード(password)に関する操作

 

change-password

これを実行する事で"IAMユーザー"のパスワードを変更します。ルートアカウントパスワードはこのアクションによって影響を受ける事はありません。

...とコマンドヘルプを読む限り書いてあるのですが、所定のIAMユーザーを示すオプションが無いっぽい?

$ aws iam change-password --
--color          --endpoint-url   --no-paginate    --old-password   --profile        --version
--debug          --new-password   --no-verify-ssl  --output         --region  

用法的には以下のような感じになるのでしょうが、動作検証はしておりませんw

$ aws iam change-password --old-password xxxxxx --new-password yyyyyy 

パスワードポリシー(password-policy)に関する操作

管理コンソール:IAMのダッシュボードから[Security Status]欄にある[Password Policy]の編集画面に進むことで変更出来る要素群です。パスワードを作成する時に定める生成ルールを取り扱います。

iam-password-policy-1
iam-password-policy-2

 

get-account-password-policy

現在のアカウントパスワードポリシー情報を取得します。

$ aws iam get-account-password-policy 
{
    "ResponseMetadata": {
        "RequestId": "32b198c9-e545-11e2-ba36-0f251103ce0b"
    }, 
    "PasswordPolicy": {
        "RequireNumbers": false, 
        "RequireLowercaseCharacters": false, 
        "RequireUppercaseCharacters": false, 
        "MinimumPasswordLength": 6, 
        "AllowUsersToChangePassword": false, 
        "RequireSymbols": false
    }
}

 

update-account-password-policy

IAM パスワードポリシーの管理 - AWS Identity and Access Management

パスワードポリシーに関する設定項目を単一、または復数に更新可能なこのコマンド、書式は以下のような感じになっております。また『minimum-password-length』以外は真偽値(boolean)を渡すようにあるのですが...

$ aws iam update-account-password-policy \n
--allow-users-to-change-password "true" \n
--require-lowercase-characters "true" \n
--require-uppercase-characters "true" \n
--minimum-password-length 10 \n
--require-numbers "true" 
--require-symbols "true"

該当しそうな値は軒並み『そんなオプション知らんがな』と言われてしまいます...(´・ω・)

$ aws iam update-account-password-policy --require-uppercase-characters true  
Unknown options: ['true']
$ aws iam update-account-password-policy --require-uppercase-characters TRUE
Unknown options: ['TRUE']
$ aws iam update-account-password-policy --require-uppercase-characters 'true'
Unknown options: ['true']
$ aws iam update-account-password-policy --require-uppercase-characters 'TRUE'
Unknown options: ['TRUE']
$ aws iam update-account-password-policy --require-uppercase-characters yes   
Unknown options: ['yes']
$ aws iam update-account-password-policy --require-uppercase-characters 1  
Unknown options: ['1']
$ aws iam update-account-password-policy --require-uppercase-characters "1"
Unknown options: ['1']
$ aws iam update-account-password-policy --require-uppercase-characters True
Unknown options: ['True']

5ヶ月前のこのissueでは対応した、となっている模様。

と思ったら最近また似たような事象でissueにて言及している人が。(およそ6月末頃?)

boolean値に関する問題については、しばらく前に対応したけど、直ってないとかいうステータスなのでしょうかねぇ...

 

delete-account-password-policy

アカウントパスワードポリシーを削除します。

上記更新系のメソッドが動かない?ので、まずは管理コンソールで値を設定してみるところから。

そして削除。こちらの要素も、削除を行うと設定前の状態(デフォルト初期値)に戻るようです。

$ aws iam delete-account-password-policy

アクセスキー(access-key)に関する操作

 

create-access-key

所定ユーザーのアクセスキーを作成します。

$ aws iam create-user --user-name iam-ack-user
$ aws iam create-access-key --user-name iam-ack-user
{
    "AccessKey": {
        "UserName": "iam-ack-user", 
        "Status": "Active", 
        "CreateDate": "2013-07-05T13:05:51.141Z", 
        "SecretAccessKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", 
        "AccessKeyId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    }, 
    "ResponseMetadata": {
        "RequestId": "9dfadfe3-e573-11e2-8a03-a9df50e5b4b7"
    }
}

 

list-access-keys

特定ユーザーに関連したアクセスキーIDの情報を返します。

--user-name パラメータを指定していない場合は実行時のアカウントに紐付くキー情報、--user-name パラメータを指定した場合はその指定ユーザのキー情報を返すようです。

$ aws iam list-access-keys --user-name iam-ack-user
[
    {
        "UserName": "iam-ack-user", 
        "Status": "Active", 
        "CreateDate": "2013-07-05T13:05:51Z", 
        "AccessKeyId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    }
]

 

update-access-key

特定アクセスキーのステータスをActiveからInactiveへ、またはその逆へ変更します。このアクションはアクセスキーのローテーション活動の一環として行われる事を想定しているようです。

$ aws iam update-access-key --user-name iam-ack-user --access-key-id XXXXXXXXXXXXXXXXX --status Inactive
$ aws iam list-access-keys --user-name iam-ack-user | jq '.[].UserName, .[].Status, .[].AccessKeyId'
"iam-ack-user"
"Inactive"
"XXXXXXXXXXXXXXXXX"
$ aws iam update-access-key --user-name iam-ack-user --access-key-id XXXXXXXXXXXXXXXXX --status Active
$ aws iam list-access-keys --user-name iam-ack-user | jq '.[].UserName, .[].Status, .[].AccessKeyId'e
"iam-ack-user"
"Active"
"XXXXXXXXXXXXXXXXX"

 

delete-access-key

所定のアクセスキーを削除します。

$ aws iam delete-access-key --user-name iam-ack-user --access-key-id XXXXXXXXXXXXXXXXX
$ aws iam list-access-keys --user-name iam-ack-user | jq length
0