🎉

3. アカウント管理的セキュリティ

2023/06/19に公開

対象サービス

  • AWS Audit Manager
  • AWS CloudTrail
  • AWS Config
  • AWS Trusted Advisor
  • Amazon Detective
  • AWS Security Hub
  • Amazon GuardDuty
  • Amazon Inspector
  • AWS IAM
  • AWS Directory Service
  • AWS Single Sign-On
  • IAM Identity Center
  • Amazon Cognito*

*試験ガイド内の"AWSのサービスと機能"には記載なし

AWS Audit Manager

フレームワーク(PCI DSSなど)ベースでコンプライアンスチェックを行いS3にレポートを出力する
監査対象サービスを指定して検査することで24時間後に準拠有無とそのエビデンスを確認可能
https://blog.serverworks.co.jp/AWS_AuditManager

AWS CloudTrail

https://d1.awsstatic.com/webinars/jp/pdf/services/20210119_AWSBlackbelt_CloudTrail.pdf

ポイント

リージョナルサービス(一括有効化オプション有)

https://docs.aws.amazon.com/ja_jp/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html
※S3バケットの管理と併せて要チェック

すべてのAPIイベントを保存(期間について要注意)


※デフォルトでは、CloudTrail によって S3 バケットに配信されるログファイルは、Amazon S3 マネージド暗号化キーによるサーバー側の暗号化 (SSE-S3) を使用して暗号化されます

Organizations連携

ログ保護

  • “WriteOnceReadMany”(WORM)モデル
  • 整合性検証機能(CLIでハッシュを使って同一のものであることを検証)
  • S3側の保護

CloudTrail Lake

イベントに対してSQLベースのクエリを実行

CloudTrail Insights

ベースラインを作成して以上パターンの検知

AWS Config

https://d1.awsstatic.com/webinars/jp/pdf/services/20201208_AWSBlackBelt_ConfigUpdate_A.pdf
・コンプライアンスチェックと修復(Config, Automation)
・ルールベースでのコンプライアンスチェック
・リージョナルサービス
→Configアグリゲータを使用することで複数アカウントおよび複数リージョンのデータを表示可能
・IAMアクセス許可の変更履歴チェック

マルチアカウントでの構成

https://dev.classmethod.jp/articles/organizations-config/
https://dev.classmethod.jp/articles/share-config-rules/

Organization配下で複数のアカウントに対してConfigおよびカスタムルールを有効化し、情報を集約する

親アカウントからConfigを有効化し、アグリゲータを作成
※この際にロールや対象リージョンを選択
その後任意のルールをStackSetsで展開する

AWS Trusted Advisor

https://d1.awsstatic.com/webinars/jp/pdf/services/20180711_AWS-BlackBelt_TrustedAdvisor_public.pdf

SGの不必要ポートの検出が出来る

AWS Security Hub

Config, SecurityHub の自動検出および評価方法(検出評価、プロアクティブ評価)

https://d1.awsstatic.com/webinars/jp/pdf/services/20201013_AWS-BlackBelt-AWSSecurityHub.pdf

マルチアカウント

https://blog.serverworks.co.jp/organizations/security-hub/multi-deploy

通知


https://blog.serverworks.co.jp/eventbridge/

修復

https://dev.classmethod.jp/articles/aws-security-hub-auto-remediation-asfbp/

Amazon GuardDuty

悪意のあるIPアドレス、異常検出、機械学習などの統合脅威インテリジェンスを使用して脅威を検出(外部からの脅威を検出する)

情報ソースとしては以下

  • VPC flow logs
  • DNS Logs
  • CloudTrail Events

https://dev.classmethod.jp/articles/devio2023-guardduty/

通知

https://zenn.dev/devcamp/articles/9463ec14616a5c

EventBridgeからSNS経由で通知を行う

検出抑制

https://dev.classmethod.jp/articles/aws-guardduty-suppression-rules-2022/

過検知や誤検出が行われる場合、抑制ルールを使用することが可能
→条件(フィルター)に一致した新規検出を自動でアーカイブすることで検出を抑制する

信頼できるIPリスト/脅威リスト

https://docs.aws.amazon.com/ja_jp/guardduty/latest/ug/guardduty_upload-lists.html
ホワイトリスト/ブラックリスト形式でのIP除外(VPCフローログに影響を与える)

統合

Amazon Detective:検知内容の相関分析が可能
Security Hub:検出結果の連携
Organization:マルチアカウント展開

保護プラン

Amazon Inspector

脆弱性の検出を行うサービス
https://dev.classmethod.jp/articles/amazon-inspector-v2-released/

脆弱性修復について
https://pages.awscloud.com/rs/112-TZM-766/images/20230224_27th_ISV_DiveDeepSeminar_MultiAccountVulnerability.pdf
→ Organizations と連携することでマルチアカウントでの脆弱性スキャンを構成し各アカウントの検出結果の確認ができる

EC2

SSM Agent を使用してスキャンを行う
※コンソール上で有効化するとマネージドインスタンスに対して定期スキャンを実施する
https://dev.classmethod.jp/articles/check-amazon-inspector-scan-requirements-for-windows/
https://docs.aws.amazon.com/ja_jp/inspector/latest/user/scanning-ec2.html

スキャンタイミング

  • 新規 EC2 インスタンスを起動するとき
  • 既存の EC2 インスタンス (Linux のみ) に新しいソフトウェアをインストールする場合
  • Amazon Inspector が新しい共通脆弱性と危険性 (CVE) 項目をデータベースに追加し、その CVE がお客様の EC2 インスタンス (Linux のみ) に関連している場合。

デフォルト6時間ごとに定期スキャンが実行される(カスタマイズ可能)

コンテナ

有効化後30日以内にPushされたイメージをスキャン
その後のスキャンタイミング

  • 新しいコンテナーイメージがプッシュされるたびに
  • Amazon Inspector が新しい共通脆弱性と危険性 (CVE) 項目をデータベースに追加し、その CVE がそのコンテナイメージに関連する場合 (連続スキャンのみ)
    https://docs.aws.amazon.com/ja_jp/inspector/latest/user/scanning-ecr.html
    ※30日以前のイメージは再Pushが必要

ECR ベーシックスキャン

https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/image-scanning-basic.html
オープンソースの Clair プロジェクトの共通脆弱性識別子 (CVE) データベースを使用するベーシックスキャンタイプを提供
プッシュ時または手動でのスキャンが実行可能(各イメージは24時間に1回スキャン可能)
→スキャン結果のリストを提供
※スキャンターゲットのリポジトリをフィルター可能

拡張スキャン

https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/image-scanning-enhanced.html
Inspectorとの統合
※スキャンターゲットのリポジトリをフィルター可能
結果はInspectorコンソールで確認

スキャンの差分

https://qiita.com/hayao_k/items/889f2a6cdc4e377fb634
スキャン対象や、 Security Hub、Organizationとの統合可否に差分がある
※ベーシックスキャンと拡張スキャンの併用はできない

Lambda

依存関係のスキャンでパッケージに含まれる脆弱性を検出
最新ではコードの脆弱性も検出可能

有効後過去90日以内に呼び出しまたは更新された関数をスキャン
それ以降のスキャンタイミング

  • Amazon Inspector が既存の Lambda 関数を発見するとすぐ
  • 新しい Lambda 関数を Lambda サービスにデプロイするとき
  • 既存の Lambda 関数またはそのレイヤーのアプリケーションコードまたは依存関係を更新する場合
  • Amazon Inspector が新しい共通脆弱性と危険性 (CVE) 項目をデータベースに追加し、その CVE がお客様の職務に関連している場合は必ず。

https://docs.aws.amazon.com/ja_jp/inspector/latest/user/scanning-lambda.html

Amazon Detective

AWS上の不審アクティビティを検出した後の分析や調査をサポートしてくれるサービス
https://d1.awsstatic.com/webinars/jp/pdf/services/20200715_AWSBlackBelt2020_AmazonDetective.pdf

データソース

  • AWS CloudTrail ログ
  • Amazon VPC フローログ
  • Amazon GuardDuty

対象アカウントを招待することで開始
https://dev.classmethod.jp/articles/amazon-detective/

AWS IAM

AWSサービスの中で何よりも大事なもの

最強に素敵なブログ(いつもありがとうございます)
https://dev.classmethod.jp/articles/re-introduction-2022-aws-iam/
https://dev.classmethod.jp/articles/policies-evaluation-logic-resource-base-policy/
https://dev.classmethod.jp/articles/aws-sap-frequently-incorrect-questions-iam/

ベーシックだけど大事な場所

https://dev.classmethod.jp/articles/devio-2021-iam-evaluation-logic/

各ステートメントの優先順位

最も一般的なポリシータイプは、アイデンティティベースのポリシーとリソースベースのポリシーです。リソースへのアクセスがリクエストされると、同じアカウント内の少なくとも 1 つの許可について、AWS はポリシーによって付与されたすべてのアクセス許可を評価します。これらのポリシーのいずれかが明示的に拒否された場合、許可は無効になります。

https://dev.classmethod.jp/articles/learn-aws-policy-documents-with-examples/

https://dev.classmethod.jp/articles/devio-2021-iam-evaluation-logic/

※Principalはリソースベースポリシーでのみ使用可能

評価論理

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow

ガードレール

  • Organizations SCP
  • Permissions boundary

アイデンティティもしくはリソースで Allow があるけれどもガードレールで Allow がない、という場合には暗黙的な拒否としたい場合に使用する

例:意図せず高い権限を付与された場合などにもその権限を使用されないようにする

特定条件でのアクセス制御

特定リージョン

"aws:RequestedRegion"を利用
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_examples_ec2_region.html
https://dev.classmethod.jp/articles/iam-policy-global-condition-key-requested-region/

特定サービス

"aws:ViaAWSService"
https://dev.classmethod.jp/articles/tsnote-iam-allow-aws-service/

特定 Organization

"aws:PrincipalOrgID" を利用
https://dev.classmethod.jp/articles/aws-principalorgid/

MFA

MFAの有効化
https://qiita.com/THacker/items/ba355edc0a5ba8b5f542

"BoolIfExists": {
    "aws:MultiFactorAuthPresent": "true"
}

タイムアウト
https://qiita.com/nisda/items/bf83b5b4d01138fb8d11

"NumericGreaterThanIfExists": {
    "aws:MultiFactorAuthAge": "3600"
}

※1時間経過したら○○

ユーザー管理

  • root ユーザは使用しない(AK/SKの削除)※削除はできない
  • 各用途に応じて IAMグループ(IAMポリシー) - IAMユーザ の作成
  • IAMロールを使ってSwitchRoleする
  • アクセス時にMFAの認証を必須にする

問題発生時

Access Analyzer

リソースベースのポリシーを検査し外部から意図しないアクセスが出来るかを検出する
https://dev.classmethod.jp/articles/iam-accessanalyzer-vs-iam-accessadvisor/

アクセスアドバイザー

アクセス可能なサービスと最終アクセス履歴の表示

認証情報レポート

IAMユーザ、AKの棚卸サービス(コンソールから出力可能)

取得可能なものは以下(一部省略)

AWS Directory Service

https://dev.classmethod.jp/articles/re-introduction-2022-directory-service/
3つの選択肢がある

  • AWS Managed Microsoft AD
  • Simple AD
  • AD Connector

AWS Single Sign-On

SSO + SAML ログイン
https://d1.awsstatic.com/webinars/jp/pdf/services/20200722_AWSBlackbelt_シングルサインオンの設計と運用.pdf

IAM Identity Center

https://dev.classmethod.jp/articles/aws-sso-wakewakame/

この手順を使用して、1 AWS つの管理ポリシーを使用する定義済みの権限セット、または最大 10 AWS の管理ポリシーまたは顧客管理ポリシーと 1 つのインラインポリシーを使用するカスタム権限セットを作成します。IAM のサービスクォータコンソールで、最大 10 個のポリシーへの調整をリクエストできます。

https://zenn.dev/yaasita/articles/aa48bfa06b9a53
https://docs.aws.amazon.com/ja_jp/singlesignon/latest/userguide/what-is.html
https://tech-blog.cloud-config.jp/2023-05-17-aws-single-sign-on-tutorial

Amazon Cognito

https://d1.awsstatic.com/webinars/jp/pdf/services/20200630_AWS_BlackBelt_Amazon Cognito.pdf

https://www.google.com/url?sa=i&url=https%3A%2F%2Fdev.classmethod.jp%2Farticles%2Fre-introduction-2020-amazon-cognito%2F&psig=AOvVaw0SRYUdNRyZjNwJYuLS6jh3&ust=1692853228119000&source=images&cd=vfe&opi=89978449&ved=0CBAQjhxqFwoTCPj3v_D_8YADFQAAAAAdAAAAABAD

API Gateway との認証連携

https://dev.classmethod.jp/articles/api-gateway-cognito-authorizer/

SSO 関連ワードイメージ

SSO を実装するために使用されるもの
 →SAML / OIDC

https://i.moneyforward.com/resources/saml_sso

SAML

  1. SP にブラウザでアクセス
  2. IdPにリダイレクト
  3. IdPがアイデンティティストアにアクセスしユーザ認証を行う
  4. 認証が完了したらIdPがアサーションを発行
  5. アサーションを使ってSPにアクセス

SP

ユーザがアクセスしたい場所、IdPにリダイレクトして認証を行わせる

IdP

リダイレクトされてユーザの認証を行う箇所

  • okta
  • Active Directory Federation Service

アイデンティティストア

認証情報が保存されている箇所

  • okta
  • Azure AD
  • Active Directory

OIDC (OpenID Connect)

https://zerokara.dds.co.jp/oauth_oidc/oauth_oidc/
※GoogleやFacebookの情報でほかのサイトにログインするやつ

  1. アクセスしたいサイトにGoogleの情報でログインを選択
  2. アクセスしたいサイトからGoogleへトークンの発行依頼を行う
  3. Googleからユーザに認証の要求(権限確認など含む)
  4. ログイン情報の入力
  5. Googleからアクセスしたいサイトにトークンを発行
  6. アクセスしたいサイトにトークンを使用してログインする

OAuth2.0

OIDCの前任者

  1. ユーザがゲームに対してSNS連携をリクエスト
  2. ゲームからSNSに対して連携のリクエスト
  3. SNSからユーザに連携の承認依頼(ゲームに対して渡す権限の確認)
  4. ユーザが承認をする
  5. SNSからゲームに対してアクセストークンを発行
  6. ゲームはアクセストークンを利用してSNSにアクセス

Discussion