この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、せーのです。今日はセキュリティ上確認しておく必要があるrootアカウントの情報についての新項目追加のお話です。
rootのアクセスキーは作らないほうが良い
セキュリティを考える上で普段の運用に対して費用も含めた全ての権限が付いているrootアカウントを使うべきではありません。そこで普段はIAMユーザーを作成し、権限に応じてIAM Groupを作り、ユーザーをそこに所属させて運用させます。 つまり普段使わないrootアカウントに対してアクセスキーの発行はもちろんするべきではなく、もし発行していたらそれは削除しておいた方が安全です。セキュリティ認証情報も同じですね。万が一それが漏れる事を考えると管理リスクがありますので、そもそも作らない、というのがセキュリティ的には正解です。セキュリティ保全の観点から言うとrootに限らず「要らない認証情報は速攻削除」が基本方針です。
rootのキー情報の確認方法
では現在rootアカウントに対してアクセスキーが発行されているのかどうかはどう確認するのでしょうか。なんと今までは「実際にrootでAWS Management Consoleにログインする」しか方法がありませんでした。そして手元にキー情報があるけどこれはrootのものなんだろうか、これを確認するには「使ってみる」しか方法がなかったわけです。んーなかなかにリスキーです。
get-account-summary
そこで今回CLIとIAM SDKに新たな項目が加わりました。get-account-summaryはアカウントとIAMに関係する情報が返ってきます。今回話題になっている「rootのアカウントアクセスキー」はAccountAccessKeysPresent、「rootのアカウントセキュリティ認証情報」はAccountSigningCertificatesPresentで表されます。この値が0であれば発行されていない、ということです。
やってみる
では実際に確認してみましょう。まずはAWS CLIか各SDKの最新版をインストールします。今回はAWS CLIを使おうと思います。インストールしていない方はインストールして頂いて、インストールしている方は最新版にアップデートしてください。
$ sudo pip install --upgrade awscli
Password:
Downloading/unpacking awscli from https://pypi.python.org/packages/source/a/awscli/awscli-1.7.4.tar.gz#md5=afd434c96ef778a0fbfb8a7d2827af2b
Downloading awscli-1.7.4.tar.gz (288kB): 288kB downloaded
Running setup.py (path:/private/tmp/pip_build_root/awscli/setup.py) egg_info for package awscli
......略
$ aws --version
aws-cli/1.7.4 Python/2.7.6 Darwin/14.1.0
内容を確認します。今回使うのはget-account-sumaryです。
$ aws iam get-
get-account-authorization-details get-open-id-connect-provider
get-account-password-policy get-role
get-account-summary get-role-policy
get-credential-report get-saml-provider
get-group get-server-certificate
get-group-policy get-user
get-instance-profile get-user-policy
get-login-profile
$ aws iam get-account-summary
{
"SummaryMap": {
"UsersQuota": 5000,
"GroupsQuota": 100,
"InstanceProfiles": 4,
"SigningCertificatesPerUserQuota": 2,
"AccountAccessKeysPresent": 0,
"RolesQuota": 250,
"RolePolicySizeQuota": 10240,
"AccountSigningCertificatesPresent": 0,
"Users": 2,
"ServerCertificatesQuota": 20,
"ServerCertificates": 0,
"AssumeRolePolicySizeQuota": 2048,
"Groups": 3,
"MFADevicesInUse": 2,
"Roles": 10,
"AccountMFAEnabled": 1,
"MFADevices": 3,
"GroupsPerUserQuota": 10,
"GroupPolicySizeQuota": 5120,
"InstanceProfilesQuota": 100,
"AccessKeysPerUserQuota": 2,
"Providers": 0,
"UserPolicySizeQuota": 2048
}
}
$
簡単ですね。見る項目はAccountAccessKeysPresentとAccountSigningCertificatesPresentです。私の場合はどちらも0でした。もし1になっている方がいましたら、アプリケーション等を確認して頂き、すぐにそのキーを削除してください。
まとめ
いかがでしたでしょうか。こういうのはついつい忘れがちになってしまうポイントですので、一度調べておきましょう。