Deep Dive IAM権限を超えて
第三部 『IAMの鼓動はログ』
2017/03/11
自己紹介
好光 泰章(よしみつ やすあき)
NEC ソリューションイノベータ株式会社
HAクラスタ屋さん
Security-JAWS 3バカトリオ#3
JAWS-UG横浜支部
1
NES:AWSのリセール提供
2
• AWSアカウントの不正利用
 高額請求、ビジネスの停止
• 適切でないAWSアカウントの存在
 おかしな初期設定のアカウント
 セキュリティの見直しされてないアカウント
 とりあえず作成したアカウント
 ずっと使ってないアカウント
IAM界隈での出来事 IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
『そうだな…IAMの宿命だものな。
IAMは事態の善悪など分からずに、
命令に従うんだものな。許してやるよ! 』
IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
4
IAMベストプラクティス
 AWSアカウントのアクセスキーをロック
 個々に IAM ユーザーを作成
 ポリシーを使用して可能な限り権限を割り当てる
 アクセス許可を割り当てるためにグループを利用
 最小限の特権
 強度の高いパスワード
 特権ユーザーにはMFA を有効化
 EC2で作動するアプリケーションにはロールを使用
 認証情報は共有せずにロールを使用
 認証情報を定期的にローテーション
 不要な認証情報の削除
 追加セキュリティに対するポリシー条件を使用
 AWSアカウントのアクティビティの監視
 IAM ベストプラクティスについてのビデオ説明
IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
5
AWSアカウント監視
AWS
CloudTrail
AWS
Config
AWS アカウントの
すべての API 呼び出しをロギング
AWS リソースの
変更履歴、構成変更をロギング
IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
6
AWS CloudTrail API Lookup IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
7
AWS CloudTrail API Lookup
・S3に保存されるJSONログの一部情報のみ
・7日間のみ保存
・検索できる属性に制限あり
IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
8
サインイン成功
{
"eventVersion": "1.05",
"userIdentity": {
"type": "IAMUser",
"principalId": “xxx",
"arn": "arn:aws:iam::xx:user/xxUser",
"accountId": “111111111111,
"userName": “xxUser"
},
"eventTime": "2017-03-01T03:07:48Z",
"eventSource": "signin.amazonaws.com",
"eventName": "ConsoleLogin",
"awsRegion": "ap-northeast-1",
"sourceIPAddress": “11.22.33.44",
"userAgent": "Mozilla/5.0 (Windows NT 6.1; rv:49.0) Gecko/20100101 Firefox/49.0",
"requestParameters": null,
"responseElements": {
"ConsoleLogin": "Success"
},
"additionalEventData": {
"LoginTo": "https://ap-northeast-1.console.aws.amazon.com/xxx",
"MobileVersion": "No",
"MFAUsed": "No"
},
"eventID": "1c6338ba-691a-488d-900c-c6d56d882f08",
"eventType": "AwsConsoleSignIn",
"recipientAccountId": “111111111111"
}
誰が?
どのリソース?
何するの?
どやった?
IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
MFA使ってない
9
存在しないIAMユーザーでサインイン
{
"eventVersion": "1.05",
"userIdentity": {
"type": "IAMUser",
"accountId": " 111111111111",
"accessKeyId": "",
"userName": "HIDDEN_DUE_TO_SECURITY_REASONS"
},
"eventTime": "2017-03-04T15:20:04Z",
"eventSource": "signin.amazonaws.com",
"eventName": "ConsoleLogin",
"awsRegion": "us-east-1",
"sourceIPAddress": "11.22.33.44",
"userAgent": "Mozilla/5.0 (Windows NT 6.1; rv:49.0) Gecko/20100101 Firefox/49.0",
"errorMessage": "No username found in supplied account",
"requestParameters": null,
"responseElements": {
"ConsoleLogin": "Failure"
},
"additionalEventData": {
"LoginTo": "https://console.aws.amazon.com/xxx",
"MobileVersion": "No",
"MFAUsed": "No"
},
"eventID": "fefabd18-1a2c-4035-b1a5-e0ef931a4fc7",
"eventType": "AwsConsoleSignIn",
"recipientAccountId": " 111111111111"
}
誰が?
どのリソース?
何するの?
どやった?
なんで?
IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
10
ユーザー作成
{
"eventVersion": "1.02",
"userIdentity": {
"type": "IAMUser",
"principalId": “xx",
"arn": "arn:aws:iam::xx:user/xxUser",
"accountId": “111111111111 ",
"accessKeyId": “xxx",
"userName": "cxxUser",
"sessionContext": {
"attributes": {
"mfaAuthenticated": "false",
"creationDate": "2017-03-03T08:15:07Z"
}
},
"invokedBy": "signin.amazonaws.com"
},
"eventTime": "2017-03-03T08:48:37Z",
"eventSource": "iam.amazonaws.com",
"eventName": "CreateUser",
"awsRegion": "us-east-1",
"sourceIPAddress": “11.22.33.44",
"userAgent": "signin.amazonaws.com",
"requestParameters": {
"userName": “test"
},
"responseElements": {
"user": {
"path": "/",
"arn": "arn:aws:iam::xx:user/test",
"userId": “xx",
"createDate": "Mar 3, 2017 8:48:37 AM",
"userName": "test"
}
},
"requestID": "315322f1-ffee-11e6-bbe5-3c435e",
"eventID": "c4b98f5f-2911-4254-8c0c-1dcc9f8247",
"eventType": "AwsApiCall",
"recipientAccountId": “xxx"
}
誰が?
どのリソース?
どやった?
何するの?
API経由の操作
IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
11
その他 IAM観点でみるべきところ
 rootアカウントでのサインイン
 eventName =“ConsoleLogin” && userIdentity.type = “Root”
 サインイン失敗
 eventName =“ConsoleLogin” && errorMessage = “Failed authentication”
 MFAなしでのサインイン
 eventName =“ConsoleLogin” && additionalEventData.MFAUser = “No”
 認証失敗
 errorCode =“AccessDenied” || errorCode = “UnauthorizedOperaion”
 IAMポリシーの変更
 eventName = “DeleteGroupPolicy” || eventName = “DeleteRolePolicy” ||
eventName = “DeleteUserPolicy” || eventName = “PutGroupPolicy” ||
eventName = “PutRolePolicy” || eventName = “PutUserPolicy” ||
eventName = “CreatePolicy” || eventName = “DeletePolicy” ||
eventName = “CreatePolicyVersion” || eventName = “DeletePolicyVersion” ||
eventName = “AttatchRolePolicy” || eventName = “DetatchRolePolicy” ||
eventName = “AttatchUserPolicy” || eventName = “DetatchUserPolicy” ||
eventName = “AttatchGroupPolicy” || eventName = “DetatchGroupPolicy”
IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
12
S3ログ
S3に保存されるログを活用しましょう!
・複数アカウントのログを集約可能
・暗号化して保存も可能
・Digest Fileを使った整合性の確認も可能
IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
13
S3ログ
<変換>
・AWS CloudWatch Logs
・Amazon ElasticSearch + Kibana
・Amazon Athena
・サードパーティツール
生ログ=JSON形式
IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
14
生ログをExcel形式に変換
eventTime awsRegion eventSource eventName userNamesourceIPAddress userAgent requestParameters
2017-03-03T00:33:52Z ap-northeast-1 ds.amazonaws.com DescribeDirectories hoge 10.143.35.20 signin.amazonaws.com {"includeIdentityPools":false}
2017-03-03T00:32:57Z ap-northeast-1 elasticloadbalancing.amazonaws.com DescribeLoadBalancers hoge 10.240.200.10 signin.amazonaws.com null
2017-03-03T00:32:56Z ap-northeast-1 signin.amazonaws.com CheckMfa hoge 10.143.35.20 Mozilla/5.0 (Windows
2017-03-03T00:32:56Z ap-northeast-1 signin.amazonaws.com ConsoleLogin hoge 10.143.35.20 Mozilla/5.0 (Windows
2017-03-03T00:34:24Z ap-northeast-1 elasticloadbalancing.amazonaws.com DescribeLoadBalancers hoge 10.143.35.20 signin.amazonaws.com {"pageSize":300}
2017-03-03T00:33:09Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.20 signin.amazonaws.com {"maxRecords":100}
2017-03-03T06:28:50Z ap-northeast-1 elasticloadbalancing.amazonaws.com DescribeLoadBalancers hoge 10.143.35.11 signin.amazonaws.com {"pageSize":300}
2017-03-03T06:27:38Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100}
2017-03-03T06:27:18Z ap-northeast-1 elasticloadbalancing.amazonaws.com DescribeLoadBalancers hoge 10.240.200.201 signin.amazonaws.com null
2017-03-03T06:50:06Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100}
2017-03-03T06:50:37Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100}
2017-03-03T06:51:40Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100}
2017-03-03T06:49:03Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100}
2017-03-03T06:49:34Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100}
2017-03-03T06:52:11Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100}
2017-03-03T06:51:09Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100}
2017-03-03T06:52:42Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100}
2017-03-03T06:50:45Z ap-northeast-1 s3.amazonaws.com GetBucketVersioning hoge 10.143.35.20 signin.amazonaws.com {"bucketName":"guide-test","versioning":[""]}
2017-03-03T06:49:02Z ap-northeast-1 ec2.amazonaws.com StartInstances hoge 10.143.35.11 signin.amazonaws.com {"instancesSet":{"items":[{"instanceId":"i-b7021812"},{"instanceId":"i-4cdf
2017-03-03T06:57:48Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100}
2017-03-03T06:56:46Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100}
2017-03-03T06:56:15Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100}
2017-03-03T06:55:43Z ap-northeast-1 ec2.amazonaws.com StartInstances hoge 10.143.35.11 signin.amazonaws.com {"instancesSet":{"items":[{"instanceId":"i-0ce7b255859fce9b4"}]}}
2017-03-03T06:55:44Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100}
2017-03-03T06:57:17Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100}
2017-03-03T06:58:18Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100}
2017-03-03T06:58:50Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100}
2017-03-03T07:05:14Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100}
2017-03-03T07:04:43Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100}
2017-03-03T07:27:26Z ap-northeast-1 elasticloadbalancing.amazonaws.com DescribeLoadBalancers hoge 10.240.200.201 signin.amazonaws.com null
不正なIP?
繰り返し?
まさかroot?
IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
15
認証情報レポート(Credential Report)
user arn
user_
creation_time
password_
enabled
password_
last_used
password_
last_changed
password_
next_rotatio
n
mfa_
active
access_key_
1_active
access_key_
1_last_rotated
access_key_
1_last_used_date
<root_account>arn:aws:iam::825906717550:root2011-11-05T07:14:45+00:00not_supported 2017-03-03T02:57:30+00:00not_supported not_supported FALSE TRUE 2011-11-05T07:14:45+00:00N/A
arn:aws:iam::825906717550:user/clp-admin2011-12-26T13:32:48+00:00TRUE 2017-03-06T04:40:13+00:002014-04-07T10:01:07+00:00N/A FALSE FALSE 2014-06-14T07:11:13+00:00N/A
arn:aws:iam::825906717550:user/clp-admin-gl2015-02-16T04:36:29+00:00TRUE 2015-03-11T01:00:32+00:002015-02-16T04:40:04+00:00N/A FALSE TRUE 2015-02-16T04:36:29+00:00N/A
arn:aws:iam::825906717550:user/clp-admin-hs2014-06-24T09:47:40+00:00TRUE 2015-05-12T01:23:15+00:002014-06-24T09:49:14+00:00N/A FALSE TRUE 2014-06-24T09:47:40+00:00N/A
arn:aws:iam::825906717550:user/clp-admin-kb2014-09-10T00:21:50+00:00TRUE 2017-02-20T01:26:07+00:002014-09-10T00:34:47+00:00N/A FALSE TRUE 2014-09-10T00:21:50+00:002017-03-06T02:24:00+00
arn:aws:iam::825906717550:user/clp-awscli-kb2015-10-21T05:03:07+00:00FALSE N/A N/A N/A FALSE TRUE 2015-10-21T05:03:07+00:002017-03-06T04:34:00+00
arn:aws:iam::825906717550:user/clp-user-license2014-10-29T04:42:19+00:00TRUE no_information 2014-10-29T05:35:32+00:00N/A FALSE TRUE 2014-10-29T05:32:06+00:00N/A
arn:aws:iam::825906717550:user/clp-user-nintei2015-02-03T05:49:04+00:00TRUE 2015-02-04T02:45:04+00:002015-02-04T02:44:53+00:00N/A FALSE TRUE 2015-02-04T06:51:06+00:002017-02-24T07:33:00+00
arn:aws:iam::825906717550:user/clp-user-saptest2015-01-14T02:39:46+00:00TRUE 2016-06-01T08:16:39+00:002015-01-14T02:41:41+00:00N/A FALSE TRUE 2015-01-14T02:39:46+00:00N/A
arn:aws:iam::825906717550:user/clp-user-sol-dtest2017-01-12T00:47:04+00:00FALSE N/A N/A N/A FALSE TRUE 2017-01-12T00:47:05+00:002017-02-01T09:36:00+00
arn:aws:iam::825906717550:user/clp-user-sol-test2015-08-26T07:09:36+00:00FALSE N/A N/A N/A FALSE TRUE 2015-08-26T07:09:36+00:002015-09-02T03:01:00+00
arn:aws:iam::825906717550:user/AWS/OpsWorks/OpsWorks-opsworks_test_2-i-583a96942015-02-03T09:34:31+00:00FALSE N/A N/A N/A FALSE TRUE 2015-02-03T09:34:33+00:00N/A
arn:aws:iam::825906717550:user/AWS/OpsWorks/OpsWorks-opsworks_test_2-ip-10-0-0-2...te.internal2015-02-03T09:35:25+00:00FALSE N/A N/A N/A FALSE TRUE 2015-02-03T09:35:27+00:00N/A
arn:aws:iam::825906717550:user/AWS/OpsWorks/OpsWorks-opsworks_test_2-ip-10-0-0-2...te.internal+12015-02-03T09:38:33+00:00FALSE N/A N/A N/A FALSE TRUE 2015-02-03T09:38:34+00:00N/A
arn:aws:iam::825906717550:user/AWS/OpsWorks/OpsWorks-opsworks_test_2-ip-10-0-0-2...te.internal+22015-02-03T09:57:32+00:00FALSE N/A N/A N/A FALSE TRUE 2015-02-03T09:57:33+00:00N/A
arn:aws:iam::825906717550:user/pie0012015-08-20T07:36:52+00:00FALSE N/A N/A N/A FALSE TRUE 2015-08-20T07:36:52+00:002016-07-17T04:50:00+00
arn:aws:iam::825906717550:user/solution-pattern-eval2016-03-03T08:23:42+00:00FALSE N/A N/A N/A FALSE TRUE 2016-03-03T08:23:42+00:002016-03-30T02:29:00+00
パスワード認証と
アクセスキー認証共に有効
パスワード認証と
アクセスキー認証共に有効
パスワード認証が有効なのに
パスワードが使われた形跡がない
→ 必要なユーザー?
アクセスキーのローテーションは
されているか?MFAは適切に設定されている?
未使用のアクセスキー?
IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
16
まとめ
① IAMベストプラクティス、セキュリティホワイトペーパーは必読。
② まずはログ収集から
CloudTrail、Configのログ出力はオンにしましょう。
③ 普段からログは見ておきましょう。
いきなり見てもうろたえます。
④ ログの保全もお忘れなく。
ログがなくなると途方にくれてしまいます。あとS3の課金にも注意。
⑤ IAMは設定して終わりではありません。
セキュリティ要件を明確にして、実運用にのっけるのが大変!
IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
Fin.
17
Enjoy IAM Life!
Thank you.
『IAMは、IAMは権限なんだ。
IAMは、このAWS(クラウド)を
支えてるものなんだ!』

JAWS DAYS 2017 Deep Dive IAM 権限をこえて 〜第三部 IAMの鼓動はログ〜

  • 1.
    Deep Dive IAM権限を超えて 第三部『IAMの鼓動はログ』 2017/03/11
  • 2.
    自己紹介 好光 泰章(よしみつ やすあき) NECソリューションイノベータ株式会社 HAクラスタ屋さん Security-JAWS 3バカトリオ#3 JAWS-UG横浜支部 1 NES:AWSのリセール提供
  • 3.
    2 • AWSアカウントの不正利用  高額請求、ビジネスの停止 •適切でないAWSアカウントの存在  おかしな初期設定のアカウント  セキュリティの見直しされてないアカウント  とりあえず作成したアカウント  ずっと使ってないアカウント IAM界隈での出来事 IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
  • 4.
  • 5.
    4 IAMベストプラクティス  AWSアカウントのアクセスキーをロック  個々にIAM ユーザーを作成  ポリシーを使用して可能な限り権限を割り当てる  アクセス許可を割り当てるためにグループを利用  最小限の特権  強度の高いパスワード  特権ユーザーにはMFA を有効化  EC2で作動するアプリケーションにはロールを使用  認証情報は共有せずにロールを使用  認証情報を定期的にローテーション  不要な認証情報の削除  追加セキュリティに対するポリシー条件を使用  AWSアカウントのアクティビティの監視  IAM ベストプラクティスについてのビデオ説明 IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
  • 6.
    5 AWSアカウント監視 AWS CloudTrail AWS Config AWS アカウントの すべての API呼び出しをロギング AWS リソースの 変更履歴、構成変更をロギング IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
  • 7.
    6 AWS CloudTrail APILookup IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
  • 8.
    7 AWS CloudTrail APILookup ・S3に保存されるJSONログの一部情報のみ ・7日間のみ保存 ・検索できる属性に制限あり IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
  • 9.
    8 サインイン成功 { "eventVersion": "1.05", "userIdentity": { "type":"IAMUser", "principalId": “xxx", "arn": "arn:aws:iam::xx:user/xxUser", "accountId": “111111111111, "userName": “xxUser" }, "eventTime": "2017-03-01T03:07:48Z", "eventSource": "signin.amazonaws.com", "eventName": "ConsoleLogin", "awsRegion": "ap-northeast-1", "sourceIPAddress": “11.22.33.44", "userAgent": "Mozilla/5.0 (Windows NT 6.1; rv:49.0) Gecko/20100101 Firefox/49.0", "requestParameters": null, "responseElements": { "ConsoleLogin": "Success" }, "additionalEventData": { "LoginTo": "https://ap-northeast-1.console.aws.amazon.com/xxx", "MobileVersion": "No", "MFAUsed": "No" }, "eventID": "1c6338ba-691a-488d-900c-c6d56d882f08", "eventType": "AwsConsoleSignIn", "recipientAccountId": “111111111111" } 誰が? どのリソース? 何するの? どやった? IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜 MFA使ってない
  • 10.
    9 存在しないIAMユーザーでサインイン { "eventVersion": "1.05", "userIdentity": { "type":"IAMUser", "accountId": " 111111111111", "accessKeyId": "", "userName": "HIDDEN_DUE_TO_SECURITY_REASONS" }, "eventTime": "2017-03-04T15:20:04Z", "eventSource": "signin.amazonaws.com", "eventName": "ConsoleLogin", "awsRegion": "us-east-1", "sourceIPAddress": "11.22.33.44", "userAgent": "Mozilla/5.0 (Windows NT 6.1; rv:49.0) Gecko/20100101 Firefox/49.0", "errorMessage": "No username found in supplied account", "requestParameters": null, "responseElements": { "ConsoleLogin": "Failure" }, "additionalEventData": { "LoginTo": "https://console.aws.amazon.com/xxx", "MobileVersion": "No", "MFAUsed": "No" }, "eventID": "fefabd18-1a2c-4035-b1a5-e0ef931a4fc7", "eventType": "AwsConsoleSignIn", "recipientAccountId": " 111111111111" } 誰が? どのリソース? 何するの? どやった? なんで? IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
  • 11.
    10 ユーザー作成 { "eventVersion": "1.02", "userIdentity": { "type":"IAMUser", "principalId": “xx", "arn": "arn:aws:iam::xx:user/xxUser", "accountId": “111111111111 ", "accessKeyId": “xxx", "userName": "cxxUser", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2017-03-03T08:15:07Z" } }, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2017-03-03T08:48:37Z", "eventSource": "iam.amazonaws.com", "eventName": "CreateUser", "awsRegion": "us-east-1", "sourceIPAddress": “11.22.33.44", "userAgent": "signin.amazonaws.com", "requestParameters": { "userName": “test" }, "responseElements": { "user": { "path": "/", "arn": "arn:aws:iam::xx:user/test", "userId": “xx", "createDate": "Mar 3, 2017 8:48:37 AM", "userName": "test" } }, "requestID": "315322f1-ffee-11e6-bbe5-3c435e", "eventID": "c4b98f5f-2911-4254-8c0c-1dcc9f8247", "eventType": "AwsApiCall", "recipientAccountId": “xxx" } 誰が? どのリソース? どやった? 何するの? API経由の操作 IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
  • 12.
    11 その他 IAM観点でみるべきところ  rootアカウントでのサインイン eventName =“ConsoleLogin” && userIdentity.type = “Root”  サインイン失敗  eventName =“ConsoleLogin” && errorMessage = “Failed authentication”  MFAなしでのサインイン  eventName =“ConsoleLogin” && additionalEventData.MFAUser = “No”  認証失敗  errorCode =“AccessDenied” || errorCode = “UnauthorizedOperaion”  IAMポリシーの変更  eventName = “DeleteGroupPolicy” || eventName = “DeleteRolePolicy” || eventName = “DeleteUserPolicy” || eventName = “PutGroupPolicy” || eventName = “PutRolePolicy” || eventName = “PutUserPolicy” || eventName = “CreatePolicy” || eventName = “DeletePolicy” || eventName = “CreatePolicyVersion” || eventName = “DeletePolicyVersion” || eventName = “AttatchRolePolicy” || eventName = “DetatchRolePolicy” || eventName = “AttatchUserPolicy” || eventName = “DetatchUserPolicy” || eventName = “AttatchGroupPolicy” || eventName = “DetatchGroupPolicy” IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
  • 13.
  • 14.
    13 S3ログ <変換> ・AWS CloudWatch Logs ・AmazonElasticSearch + Kibana ・Amazon Athena ・サードパーティツール 生ログ=JSON形式 IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
  • 15.
    14 生ログをExcel形式に変換 eventTime awsRegion eventSourceeventName userNamesourceIPAddress userAgent requestParameters 2017-03-03T00:33:52Z ap-northeast-1 ds.amazonaws.com DescribeDirectories hoge 10.143.35.20 signin.amazonaws.com {"includeIdentityPools":false} 2017-03-03T00:32:57Z ap-northeast-1 elasticloadbalancing.amazonaws.com DescribeLoadBalancers hoge 10.240.200.10 signin.amazonaws.com null 2017-03-03T00:32:56Z ap-northeast-1 signin.amazonaws.com CheckMfa hoge 10.143.35.20 Mozilla/5.0 (Windows 2017-03-03T00:32:56Z ap-northeast-1 signin.amazonaws.com ConsoleLogin hoge 10.143.35.20 Mozilla/5.0 (Windows 2017-03-03T00:34:24Z ap-northeast-1 elasticloadbalancing.amazonaws.com DescribeLoadBalancers hoge 10.143.35.20 signin.amazonaws.com {"pageSize":300} 2017-03-03T00:33:09Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.20 signin.amazonaws.com {"maxRecords":100} 2017-03-03T06:28:50Z ap-northeast-1 elasticloadbalancing.amazonaws.com DescribeLoadBalancers hoge 10.143.35.11 signin.amazonaws.com {"pageSize":300} 2017-03-03T06:27:38Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100} 2017-03-03T06:27:18Z ap-northeast-1 elasticloadbalancing.amazonaws.com DescribeLoadBalancers hoge 10.240.200.201 signin.amazonaws.com null 2017-03-03T06:50:06Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100} 2017-03-03T06:50:37Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100} 2017-03-03T06:51:40Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100} 2017-03-03T06:49:03Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100} 2017-03-03T06:49:34Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100} 2017-03-03T06:52:11Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100} 2017-03-03T06:51:09Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100} 2017-03-03T06:52:42Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100} 2017-03-03T06:50:45Z ap-northeast-1 s3.amazonaws.com GetBucketVersioning hoge 10.143.35.20 signin.amazonaws.com {"bucketName":"guide-test","versioning":[""]} 2017-03-03T06:49:02Z ap-northeast-1 ec2.amazonaws.com StartInstances hoge 10.143.35.11 signin.amazonaws.com {"instancesSet":{"items":[{"instanceId":"i-b7021812"},{"instanceId":"i-4cdf 2017-03-03T06:57:48Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100} 2017-03-03T06:56:46Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100} 2017-03-03T06:56:15Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100} 2017-03-03T06:55:43Z ap-northeast-1 ec2.amazonaws.com StartInstances hoge 10.143.35.11 signin.amazonaws.com {"instancesSet":{"items":[{"instanceId":"i-0ce7b255859fce9b4"}]}} 2017-03-03T06:55:44Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100} 2017-03-03T06:57:17Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100} 2017-03-03T06:58:18Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100} 2017-03-03T06:58:50Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100} 2017-03-03T07:05:14Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100} 2017-03-03T07:04:43Z ap-northeast-1 monitoring.amazonaws.com DescribeAlarms hoge 10.143.35.11 signin.amazonaws.com {"maxRecords":100} 2017-03-03T07:27:26Z ap-northeast-1 elasticloadbalancing.amazonaws.com DescribeLoadBalancers hoge 10.240.200.201 signin.amazonaws.com null 不正なIP? 繰り返し? まさかroot? IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
  • 16.
    15 認証情報レポート(Credential Report) user arn user_ creation_time password_ enabled password_ last_used password_ last_changed password_ next_rotatio n mfa_ active access_key_ 1_active access_key_ 1_last_rotated access_key_ 1_last_used_date <root_account>arn:aws:iam::825906717550:root2011-11-05T07:14:45+00:00not_supported2017-03-03T02:57:30+00:00not_supported not_supported FALSE TRUE 2011-11-05T07:14:45+00:00N/A arn:aws:iam::825906717550:user/clp-admin2011-12-26T13:32:48+00:00TRUE 2017-03-06T04:40:13+00:002014-04-07T10:01:07+00:00N/A FALSE FALSE 2014-06-14T07:11:13+00:00N/A arn:aws:iam::825906717550:user/clp-admin-gl2015-02-16T04:36:29+00:00TRUE 2015-03-11T01:00:32+00:002015-02-16T04:40:04+00:00N/A FALSE TRUE 2015-02-16T04:36:29+00:00N/A arn:aws:iam::825906717550:user/clp-admin-hs2014-06-24T09:47:40+00:00TRUE 2015-05-12T01:23:15+00:002014-06-24T09:49:14+00:00N/A FALSE TRUE 2014-06-24T09:47:40+00:00N/A arn:aws:iam::825906717550:user/clp-admin-kb2014-09-10T00:21:50+00:00TRUE 2017-02-20T01:26:07+00:002014-09-10T00:34:47+00:00N/A FALSE TRUE 2014-09-10T00:21:50+00:002017-03-06T02:24:00+00 arn:aws:iam::825906717550:user/clp-awscli-kb2015-10-21T05:03:07+00:00FALSE N/A N/A N/A FALSE TRUE 2015-10-21T05:03:07+00:002017-03-06T04:34:00+00 arn:aws:iam::825906717550:user/clp-user-license2014-10-29T04:42:19+00:00TRUE no_information 2014-10-29T05:35:32+00:00N/A FALSE TRUE 2014-10-29T05:32:06+00:00N/A arn:aws:iam::825906717550:user/clp-user-nintei2015-02-03T05:49:04+00:00TRUE 2015-02-04T02:45:04+00:002015-02-04T02:44:53+00:00N/A FALSE TRUE 2015-02-04T06:51:06+00:002017-02-24T07:33:00+00 arn:aws:iam::825906717550:user/clp-user-saptest2015-01-14T02:39:46+00:00TRUE 2016-06-01T08:16:39+00:002015-01-14T02:41:41+00:00N/A FALSE TRUE 2015-01-14T02:39:46+00:00N/A arn:aws:iam::825906717550:user/clp-user-sol-dtest2017-01-12T00:47:04+00:00FALSE N/A N/A N/A FALSE TRUE 2017-01-12T00:47:05+00:002017-02-01T09:36:00+00 arn:aws:iam::825906717550:user/clp-user-sol-test2015-08-26T07:09:36+00:00FALSE N/A N/A N/A FALSE TRUE 2015-08-26T07:09:36+00:002015-09-02T03:01:00+00 arn:aws:iam::825906717550:user/AWS/OpsWorks/OpsWorks-opsworks_test_2-i-583a96942015-02-03T09:34:31+00:00FALSE N/A N/A N/A FALSE TRUE 2015-02-03T09:34:33+00:00N/A arn:aws:iam::825906717550:user/AWS/OpsWorks/OpsWorks-opsworks_test_2-ip-10-0-0-2...te.internal2015-02-03T09:35:25+00:00FALSE N/A N/A N/A FALSE TRUE 2015-02-03T09:35:27+00:00N/A arn:aws:iam::825906717550:user/AWS/OpsWorks/OpsWorks-opsworks_test_2-ip-10-0-0-2...te.internal+12015-02-03T09:38:33+00:00FALSE N/A N/A N/A FALSE TRUE 2015-02-03T09:38:34+00:00N/A arn:aws:iam::825906717550:user/AWS/OpsWorks/OpsWorks-opsworks_test_2-ip-10-0-0-2...te.internal+22015-02-03T09:57:32+00:00FALSE N/A N/A N/A FALSE TRUE 2015-02-03T09:57:33+00:00N/A arn:aws:iam::825906717550:user/pie0012015-08-20T07:36:52+00:00FALSE N/A N/A N/A FALSE TRUE 2015-08-20T07:36:52+00:002016-07-17T04:50:00+00 arn:aws:iam::825906717550:user/solution-pattern-eval2016-03-03T08:23:42+00:00FALSE N/A N/A N/A FALSE TRUE 2016-03-03T08:23:42+00:002016-03-30T02:29:00+00 パスワード認証と アクセスキー認証共に有効 パスワード認証と アクセスキー認証共に有効 パスワード認証が有効なのに パスワードが使われた形跡がない → 必要なユーザー? アクセスキーのローテーションは されているか?MFAは適切に設定されている? 未使用のアクセスキー? IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜
  • 17.
    16 まとめ ① IAMベストプラクティス、セキュリティホワイトペーパーは必読。 ② まずはログ収集から CloudTrail、Configのログ出力はオンにしましょう。 ③普段からログは見ておきましょう。 いきなり見てもうろたえます。 ④ ログの保全もお忘れなく。 ログがなくなると途方にくれてしまいます。あとS3の課金にも注意。 ⑤ IAMは設定して終わりではありません。 セキュリティ要件を明確にして、実運用にのっけるのが大変! IAM権限を超えて 〜 第三部 IAMの鼓動はログ 〜 Fin.
  • 18.
    17 Enjoy IAM Life! Thankyou. 『IAMは、IAMは権限なんだ。 IAMは、このAWS(クラウド)を 支えてるものなんだ!』