IAMのベストプラクティス
http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html#lock-away-credentials
AWSアカウントのルートユーザーのアクセスキーをロックする
お客様はアクセスキー(アクセスキー ID およびシークレットアクセスキー)を使用し、AWS に対してプログラムによるリクエストをすることができます。
ただし、AWS アカウントのルートユーザーのアクセスキーを使用しないでください。
AWS アカウントのアクセスキーにより、請求情報を含む、すべての AWS サービスのお客様のリソースすべてにフルアクセスできます。
AWS アカウントアクセスキーに関連付けられたアクセス許可を制限することはできません。
そのため、クレジットカード番号や他の機密情報を保護するのと同じように、自身の AWS アカウントアクセスキーを保護してください。
これを行うには、いくつかの方法があります。
ご自身の AWS アカウントに対するアクセスキーをまだお持ちでない場合、絶対に必要でない限りは作成しないようにしてください。
代わりに、アカウント E メールアドレスとパスワードを使用して AWS マネジメントコンソール にサインインし、
管理権限を持つ IAM ユーザーを作成します。すでにご自身の AWS アカウントに対するアクセスキーをお持ちの場合は、削除してください。
それを保持する必要がある場合は、アクセスキーを定期的にローテーション(変更)してください。
ご自身の AWS アカウントのパスワードやアクセスキーを決して他者に開示しないでください。
AWS マネジメントコンソール にアクセスするアカウントレベルを保護するために、強度の高いパスワードを設定します。
AWS アカウントの AWS 多要素認証 (MFA) を有効にします。
個々のIAMユーザーの作成
AWS にアクセスするのに、お客様の AWS アカウントのルートユーザー認証情報を使用しないでください。
また、他の誰にもご自身の認証情報を譲渡しないでください。
代わりに、AWS アカウントへのアクセスが必要な人用に個別のユーザーを作成します。
また同様にご自身にも IAM ユーザーを作成することにより、IAM ユーザーに管理者特権を与え、それらのユーザーをお客様の全作業で使用することができます。
AWS定義のポリシーを使用して可能な限りアクセス権限を割り当てる
可能な限り権限を付与するには、AWS によって作成および保守されている管理ポリシーを使用することをお勧めします。
これらのポリシーを使用する主な利点は、新しいサービスとして AWS によってこれらの保守や更新が行われる、
あるいは新しいAPIが導入されることです。
IAMユーザーへのアクセス権限を割り当てるためにグループを使用する
個々の IAM ユーザーの権限を定義する代わりに、ジョブ機能 (管理者、開発者、監査など) に関連するグループを作成する方が便利です。
IAM グループのすべてのユーザーに、グループに割り当てられたアクセス許可が継承されます。
最小権限を付与する
IAM ポリシーを作成するとき、最小限の特権を認めるという標準的なセキュリティアドバイスに従いましょう。
そうすれば、タスクを実行するというリクエストのアクセス許可のみを認めることができます。
ユーザーが何をする必要があるのかを決定し、それから各ユーザーに見合ったポリシーを作成します。
そうすることにより、ユーザーは、それらのタスクのみを実行します。
アクセスレベルを使用してIAM権限を確認する
AWS アカウントのセキュリティを向上させるには、各 IAM ポリシーを定期的に確認し、監視する必要があります。
AWS は、各サービスのアクションを、List、Read、Write、または Permissions management の各アクションが実行する内容に基づいて、4 つのアクセスレベルの 1 つに分類します。
これらのアクセスレベルを使用して、ポリシーに含めるアクションを判断できます。
ユーザーの強力なパスワードポリシーを設定
IAM コンソールの [アカウント設定] ページで、アカウントのパスワードポリシーを作成できます。
パスワードポリシーを使用して、最小文字数、アルファベット以外の文字が必要かどうか、変更頻度など、パスワードの要件を定義できます。
特権ユーザーに対してMFAを有効化する
追加セキュリティとして、特権のある IAM ユーザー (機密性の高リソースまたは API にアクセスが許されているユーザー) に対して多要素認証 (MFA) を有効化することができます。
Amazon EC2インスタンスで実行するアプリケーションに対しロールを使用する
Amazon EC2 インスタンスで作動するアプリケーションは、他の AWS サービスにアクセスするために認証情報が必要です。
アプリケーションに認証情報を提供する安全な方法は、IAM ロールを使用することです。
IAM ロールは独自のアクセス許可を持ったエンティティではありますが、ユーザーまたはグループではありません。
また、IAM ユーザーが持っているような永続的な自身の認証情報は設定されていません。
Amazon EC2 の場合、IAM は EC2 インスタンスに一時的な認証情報を動的に提供し、これらの認証情報は自動的に更新されます。
認証情報を共有するのではなく、ロールを使って委託する
他の AWS アカウントからのユーザーが、お客様の AWS アカウントのリソースにアクセスできるようにする必要が生じる場合があります。
その場合、アクセスキーなどのセキュリティ認証情報をアカウント間で共有してはいけません。
その代わりに、IAM ロールを使用します。
認証情報を定期的にローテーションする
お客様自身のパスワードとアクセスキーを定期的に変更し、アカウント内のすべての IAM ユーザーにも変更を促してください。
そうすることにより、知らない間にパスワードまたはアクセスキーが漏れた場合でも、
その認証情報を使ってお客様のリソースにアクセスされる期間を制限できます。
不要な認証情報を削除する
IAM ユーザーの不要な認証情報(パスワードとアクセスキー)は削除します。
たとえば、アプリケーションに使用される IAM ユーザーはパスワードを必要としません(パスワードは、AWS ウェブサイトへのサインインにのみ必要です)。
同様に、ユーザーがアクセスキーを使用しておらず、今後も使用する予定がない場合、そのユーザーがアクセスキーを持つ理由はありません。
最近使用されていないパスワードやアクセスキーは削除の対象となります。
使用していないパスワードまたはアクセスキーを検索するには、コンソールか API を使用するか、認証情報レポートをダウンロードします。
追加セキュリティに対するポリシー条件を使用する
実行可能な範囲内で、どの IAM ポリシーがリソースにアクセスできるかという条件を定義します。
たとえば、要求が発生しなければならない許容 IP アドレスの範囲を指定するための条件を記述できます。
また、指定した日付範囲または時間範囲内でのみリクエストが許可されるように指定することもできます。
また、SSL または MFA (多要素認証) の使用を必要とする条件を設定することもできます。
AWSアカウントアクティビティの監視
AWS のロギング機能を使用すると、ユーザーがアカウントで実行したアクションや使用されたリソースを確認できます。
ログファイルには、アクションの日時、アクションのソース IP、不適切なアクセス許可のために失敗したアクションなどが示されます。
- CloudFront
- CloudTrail
- CloudWatch
- Config
- S3