Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Compliance as code jaws Oita 170826

519 views

Published on

JAWS大分講演資料

Published in: Engineering
  • Be the first to comment

Compliance as code jaws Oita 170826

  1. 1. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. アマゾン ウェブ サービス ジャパン株式会社 セキュリティコンサルタント 松本 照吾 2017/8/26 Compliance as Code -セキュリティとの上手な付き合い方-
  2. 2. 今日はこんな話をします WHAT? ガバナンスとは何か WHY? Innovation vs Security? HOW? Config Rules
  3. 3. WHAT? ガバナンスとは何か WHY? Innovation vs Security? HOW? Config Rules
  4. 4. ガバナンスとは? ガバナンスとは 現状の把握に基づく合理的 な意思決定 • 現状の可視化 • リスクへの認識 • 適切な説明責任 • 適切な実行責任 Security ≠ Compliance リスクに対するControl (脅威、脆弱性、管理策の 明確化) 基準や規制、そして期待への準拠 Governance 組織が主体的に行う意志決定
  5. 5. ガバナンスとは? ガバナンスとは 現状の把握に基づく合理的 な意思決定 • 現状の可視化 • リスクへの認識 • 適切な説明責任 • 適切な実行責任 Security ≠ Compliance リスクに対するControl (脅威、脆弱性、管理策の 明確化) 基準や規制、そして期待への準拠 Governance 組織が主体的に行う意志決定 環境の見える化に基づく、 意思決定ができる環境を もたらすこと
  6. 6. 変更されたリソース ユーザーが実施した変更 AWSにおけるガバナンスと実装 現在 CloudTrail → 履歴取得 Config → 履歴取得 時間 ユーザが操作 変更される システム IAM Organizations → 設定した権限でのみ 操作可能 Config Rule → ルールから外れた状態 に対して警告
  7. 7. AWS Configとは • AWSリソースの構成変更をロギング • 履歴も保存 • 構成情報は定期的にスナップショットとしてS3に保存 • 必要に応じSNSを使った通知も可能 • ログはS3に保存 • あるべき状態の評価 (Rules) • AWSが適用するルール • 独自のルールを適用 • コスト • 記録される設定項目につき 0.003 USD (1回の設定として前払いのみ)AWS Config AWS Config Rules
  8. 8. Dash Board形式でリソースを管理 8
  9. 9. AWS Config が対応しているAWSリソース (2017/8/20現在) http://docs.aws.amazon.com/ja_jp/config/latest/developerguide/resource-config-reference.html#supported-resources AWS Service Resource Type Resource Type Value AWS Certificate Manager Certificate AWS::ACM::Certificate AWS CloudFormation Stack 1 AWS::CloudFormation::Stack AWS CloudTrail Trail AWS::CloudTrail::Trail Amazon CloudWatch Alarm AWS::CloudWatch::Alarm Amazon Elastic Block Store Amazon EBS volume AWS::EC2::Volume Amazon Elastic Compute Cloud EC2 Dedicated host 2 AWS::EC2::Host EC2 Elastic IP (VPC only) AWS::EC2::EIP EC2 instance AWS::EC2::Instance EC2 network interface AWS::EC2::NetworkInterface EC2 security group AWS::EC2::SecurityGroup Amazon EC2 Systems Manager Managed instance inventory 3 AWS::SSM::ManagedInstanceInventory Elastic Load Balancing Application load balancer 4 AWS::ElasticLoadBalancingV2::LoadBalancer AWS Identity and Access Management 5 IAM user 6 AWS::IAM::User IAM group 6 AWS::IAM::Group IAM role 6 AWS::IAM::Role IAM customer managed policy AWS::IAM::Policy Amazon Redshift Cluster AWS::Redshift::Cluster Cluster parameter group AWS::Redshift::ClusterParameterGroup Cluster security group AWS::Redshift::ClusterSecurityGroup Cluster snapshot AWS::Redshift::ClusterSnapshot Cluster subnet group AWS::Redshift::ClusterSubnetGroup Event subscription AWS::Redshift::EventSubscription
  10. 10. AWS Config が対応しているAWSリソース (2017/8/20現在) http://docs.aws.amazon.com/ja_jp/config/latest/developerguide/resource-config-reference.html#supported-resources AWS Service Resource Type Resource Type Value Amazon Relational Database Service RDS DB instance AWS::RDS::DBInstance RDS DB security group AWS::RDS::DBSecurityGroup RDS DB snapshot AWS::RDS::DBSnapshot RDS DB subnet group AWS::RDS::DBSubnetGroup Event subscription AWS::RDS::EventSubscription Amazon Simple Storage Service Amazon S3 bucket 7 AWS::S3::Bucket Amazon Virtual Private Cloud Customer gateway AWS::EC2::CustomerGateway Internet gateway AWS::EC2::InternetGateway Network access control list (ACL) AWS::EC2::NetworkAcl Route table AWS::EC2::RouteTable Subnet AWS::EC2::Subnet Virtual private cloud (VPC) AWS::EC2::VPC VPN connection AWS::EC2::VPNConnection VPN gateway AWS::EC2::VPNGateway
  11. 11. Configの有効化はセキュリティのベストプラクティス Cloud Trailと並んで、利 用開始時に設定をオンにす ることを推奨 AWS Configはリージョン 単位のサービスとなるため、 利用するリージョンごとに 設定が必要
  12. 12. WHAT? ガバナンスとは何か WHY? Innovation vs Security? HOW? Config Rules
  13. 13. INNOVATION vs Security Innovationの阻害要因としての セキュリティ
  14. 14. クラウドジャーニーの道程 • 導入当初は、AWSによってビジネスを加速させ たいニーズがある部門などが中心 やりたいことをすぐに実現できることが、 AWSの魅力!!! DevOps AWSのマネージドサービスで 必要なツールを活用!
  15. 15. ガバナンスの観点からみた課題 イノベーションのスピードにあわせて管理するこ とは容易ではない リリースするなら、 安全なサービスを! Security セキュリティ評価は いつするのか?
  16. 16. 警戒すべき“落とし穴”がある 結果として、“ルールに縛られた”プロセスが残る 承認プロセスの増加 サービス活用の制限 ビジネス機会の損失……本来は望んでいない結果
  17. 17. セキュリティとは誰か?
  18. 18. セキュリティ部門 リスク管理部門 監査部門 保守/運用を行うサードパーティー ・・・・・・彼らにも理由がある
  19. 19. 内部統制 職務分離という錦の御旗
  20. 20. でも、 やるべきことは、 責任を明確にすることであって、 協力しないということではないです よね。
  21. 21. Compliance as Codeの考え方 従来の組織ポリシーの評価 • エクセルでインタビュー結 果を記入 • 手作業の負担、ミス、虚偽 の結果 評価自体を自動化 • APIの呼び出しを踏まえ評 価 • Lambdaとの連動
  22. 22. Config rules AWS Configの機能 Ruleという形で定められた基準 への準拠を評価 • AWSが用意するManaged Rules • お客様が独自で用意するCustom Rules • Custom RulesはLambda Functionにより定義
  23. 23. 例:Config rulesが評価するもの 特定の機能が利用されているか • CloudTrail • MFA • S3のVersioning • Redshiftの暗号化 特定の条件にあった実装がなされているか • インスタンスタイプ • 組織の命名規則にあったタグ付け • EC2インスタンスにつながるポートの制限 • IAMのパスワードポリシー
  24. 24. なぜ、Config Rulesが有効なのか 完全自動化やイベントドリブンなコント ロールも大事だが、過度な自動化はかえっ て組織の運用を阻害することも。 内部統制の観点からみると統制の分離 • Controlを実行する権限 • Controlを評価、監査する権限 壁
  25. 25. Tips:AWS Configによる集中管理 複数のAWSアカウントを利用して いる場合にConfig rulesを利用して 評価を行う場合には、クロスアカ ウントアクセスを使って管理用ア カウントに配置したLambda Functionを呼び出すことも可能。 Lambda Functionのメンテナンス、 統制の標準化が楽に。 https://aws.amazon.com/jp/blogs/devops/h ow-to-centrally-manage-aws-config-rules- across-multiple-aws-accounts/
  26. 26. WHAT? ガバナンスとは何か WHY? Innovation vs Security? HOW? Config Rules
  27. 27. 実装のステップ –例題:VPC Flow logsの有効化を評価- https://aws.amazon.com/jp/blogs/security/how-to-audit-your-aws-resources-for-security-compliance-by-using-custom-aws-config-rules/
  28. 28. 前提:実施すること 評価事項 • VPCに対してFlow logsが有効化されているか • CIS Benchmark4.3に準拠 • Compliant(準拠)かNon Compliant(非準拠)を評価する Lambda Functionを作成 • Configで上記のLambuda Functionを呼び出すCustom Ruleを 作成 • 定められたタイミングで評価を実施し、SNSにて通知
  29. 29. 実行の仕組み • AWS Lambda • AWS Config Rules • Amazo n SNS 準拠か非準拠かを判定 するポリシー評価の コードを実行 変更があった場合に Lambda Functionを トリガー 1 2 3 準拠ステータスに変更 があった場合の通知
  30. 30. CIS Benchmarkとは? AWSのセキュリティベストプラ クティス CLIベースで評価方法を掲載 https://d0.awsstatic.com/whitepapers/compliance/AWS_CIS_Fou ndations_Benchmark.pdf
  31. 31. Blue Print Code(スクラッチで作る場合は通常Config用Blue printを利用) # Custom AWS Config Rule - Blueprint Code # import boto3, json def evaluate_compliance(config_item, r_id): return 'NONCOMPLIANT' def lambda_handler(event, context): # Create AWS SDK clients & initialize custom rule parameters config = boto3.client('config') invoking_event = json.loads(event['invokingEvent']) compliance_value = 'NOT_APPLICABLE' resource_id = invoking_event['configurationItem']['resourceId'] compliance_value = evaluate_compliance(invoking_event['configurationItem'], resource_id) response = config.put_evaluations( Evaluations=[ { 'ComplianceResourceType': invoking_event['configurationItem']['resourceType'], 'ComplianceResourceId': resource_id, 'ComplianceType': compliance_value, 'Annotation': 'Insert text here to detail why control passed/failed', 'OrderingTimestamp': invoking_event['notificationCreationTime'] }, ], ResultToken=event['resultToken']) https://aws.amazon.com/jp/blogs/security/how-to-audit-your-aws- resources-for-security-compliance-by-using-custom-aws-config-rules/ 自分の作成したロジックを定義し、compliance_value に結果を格納 結果をAWS Configに渡す。結果はAWS Configのコン ソールから確認可能 Annotationパラメータによって準拠評価に対する補足を 表記 イベントハンドラー
  32. 32. IAM Role作成 ConfigからVPC Flow logsにアク セスを行うための権限付与 以下のManaged policyをRoleに 付与 • AmazonEC2ReadOnlyAccess • AWSLambdaExecute • AWSConfigRulesExecutionRole
  33. 33. Lambda Functionの作成 LambdaのConsoleよりCreate function 実装が合う場合はConfig rules用 のBlue printからつくる方が楽※ 本例ではTriggerにCloudwatch eventsを指定 • 変更=API Callの呼び出し • Triggerは設定したい変更による ※2017/8/23現在 Node.jsでPeriodicとchange Triggeredが選択可能
  34. 34. Lambda Functionの作成 名前と言語およびVersionを選択 インラインで記載もしくはコードを アップロード
  35. 35. 追記部分の解説 import boto3, json def evaluate_compliance(config_item, r_id): if (config_item['resourceType'] != 'AWS::EC2::VPC'): return 'NOT_APPLICABLE' elif is_flow_logs_enabled(r_id): return 'COMPLIANT' else: return 'NON_COMPLIANT' def is_flow_logs_enabled(vpc_id): ec2 = boto3.client('ec2') response = ec2.describe_flow_logs( Filter=[ { 'Name': 'resource-id', 'Values': [ vpc_id, ] }, ], ) if len(response[u'FlowLogs']) != 0: return True 実際の評価を定義 評価対象が正しいか(間違ったリソースを指定していな いか) 評価結果が正しいか(VPC IDごとに準拠か非準拠か) ec2.describe_flow_logsを実行し、実行結果を’ResourceId’のみにフィル タする。 http://boto3.readthedocs.io/en/latest/reference/services/ec2.html# EC2.Client.describe_flow_logs 結果に文字列が含まれているかを評価し、含まれているならTrueをかえす。
  36. 36. 追記部分の解説 def lambda_handler(event, context): # Create AWS SDK clients & initialize custom rule parameters config = boto3.client('config') invoking_event = json.loads(event['invokingEvent']) compliance_value = 'NOT_APPLICABLE' resource_id = invoking_event['configurationItem']['resourceId'] compliance_value = evaluate_compliance(invoking_event['configurationItem'], resource_id) response = config.put_evaluations( Evaluations=[ { 'ComplianceResourceType': invoking_event['configurationItem']['resourceType'], 'ComplianceResourceId': resource_id, 'ComplianceType': compliance_value, 'Annotation': 'CIS 4.3 VPC Flow Logs', 'OrderingTimestamp': invoking_event['notificationCreationTime'] }, ], ResultToken=event['resultToken']) Annotationを変えているだけ
  37. 37. Custom ruleの作成 Configのコンソールより、 Rules→Add Rule→Add custom rule を選択 以下を設定 • Ruleの命名 • 呼び出すLambda FunctionのARNを指定 • トリガータイプ(定期的、変更時) • 頻度(定期的を選択した場合 1,3,6,12,24時間か ら選択) • ルールのパラメータ(特定のValueに沿っているか を評価する場合など)
  38. 38. 通知の設定 通知用のLambda Functionを作成 Configをクエリし、メッセージを発信 するためのポリシーを前ステップで作 成したロールに追加 Daily(Schedule expressionで rate(1day)などの頻度を定め、評価 結果を配信
  39. 39. あとは実行あるのみ 評価結果に対するアクションは自身で判断して実行する 必要あり。 評価の実行はマネジメントコンソール、CLI、定められた タイミングやイベント発生時に実行可能。
  40. 40. Codeを書くためのステップ Codeを書くことは目的にしない • Managed Ruleを活用 • 画面を見てしまえば終わり、という場合もある • 書ける人が書く(協力の文化) 車輪の再発明はいらない • Managed Ruleにあるものは不要 • AWSが公開しているCustom ruleもチェック 真似ることが大事 • やりたいことに似ているCustom ruleを探してたたき台に。 • AWSが公開しているGithubのリポジトリを参照 • https://github.com/awslabs/aws-config-rules
  41. 41. まとめとして Compliance評価を自動化 →事実に基づく意思決定 →セキュリティ運用の負荷軽減 →DevSecOps文化の醸成 Let’s Config Rules!!! Security OperationsDevelopment 要件の明確化 要件のCode化 評価に基づく 改善

×