DatabricksでDelta tableを触ってみた

はじめに

前記事(URL)ではDatabricksでDelta tableの構築を行いました。
今回は構築したDelta tableを実際に使用していきたいと思います。

以下の流れでDelta tableを触っていきます。
・データの中身の確認
・クエリの実装
・可視化

データの中身の確認

前回作成したテーブルの中身を実際に見ていきます。
image.png

クエリの実装

クエリを使用して、データの整理を行っていきます。
今回は、時系列に沿って全国の人口の推移を総人口、男女別で抜き出すようなクエリを作成していきます。
実際のコードと実行結果が以下の画像です。
image.png

欲しい情報だけを抽出することができました。

可視化

Databricksでは出力されたテーブルの可視化も行えます。
先ほどの画像のテーブルの下にあるグラフのマークをクリックし、Plot Optionsをクリックすることによってグラフをカスタマイズできます。
今回はX軸に年、Y軸に総人口、女性の人口、男性の人口を指定して折れ線グラフを作成してみました。
カスタマイズを終えれば右下のApplyをクリックします。
image.png

最終的に以下のような画像が出力されます。
image.png
Plot Optionsを以下のように変更すると異なるグラフにもなります。
image.png
image.png

これで時系列に沿った全国の人口の推移を総人口、男女別で可視化することができました。
このようにDatabricksでは作成したDelta tableを使用することができます。


Delta tableをDatabricksで作成してみた

はじめに

本記事ではDatabricksを触りたての人向けにDelta tableの構築について解説します。
詳細については以下の内容です。

■ Delta tableとは
・Delta tableについて
・Delta tableを作成するメリット
■ DatabricksでDelta tableの構築
・データの読み込み
・Delta tableに変換するための加工処理
・Delta table構築

Delta tableとは

Delta tableとは信頼性の高い読み書きを高速かつ同時に実行できるデータテーブルのことです。Data lakeというオープンソースソフトウェアによって提供され、単に大量データの処理だけでなく、日々多様化、高度化する要件に対応するための新たな技術が用意されています。

Detabricksでデータを加工するにあたって読み込んだCSV形式などのデータをDelta形式に変換することによりデータ分析に利用する大量データを高速で処理することができることはパフォーマンス面において大きなメリットとなります。

今回はそのDelta tableの構築方法について説明していきます。

DatabricksでDelta tableの構築

今回使用するCSVデータ(c01.csv)です。
こちらのデータは以下のURLより取得できます。今回はこのデータをDelta形式に変換していきます。
サンプルデータ

image.png

まずDatabricksのノートブックを開いてデータをDatabricksにアップロードします。
アップロード方法については以下の記事をご参考ください
データのアップロード方法
次に対象データを読み込み、中身を見ていきます。

image.png

カラム名を英語に変更します。
image.png
image.png

各カラムのデータ型についても確認していきます。
image.png

数値にすべきカラムが文字列になっているなど、データの型が適切でないことがわかります。
よってデータ型を適切なものに修正していきます。

データ型の変換を行い、データ型をもう一度確認してみます。
image.png

これでデータ型の変換は終わりました。

最後にDelta形式へ変換しテーブルの保存を行います。
Delta形式に変換するために、formatの中は”delta”、optionで保存先のpathを指定して、saveAsTableではテーブル名を入力して実行します。
image.png

実際にテーブルを確認していきます。
Create > Database Tables > default > population_dataからテーブルを確認できます。
image.png

保存先のpathからも確認できます。
Create > DBFS > FileStore > tables > population_data から確認できます
image.png

以上でDelta tableの構築が完了しました。
次回は、作成したデータを触ってみたいと思います。


Notebook の巻き戻し機能! ~ Databricks 分析環境のRevision history をご紹介~

皆さんは Notebook 環境で作業をしていて「以前の記述に戻したい。」「プロジェクト初期の状態に遡りたい。」といったことはないでしょうか? ここ数年データ分析プラットフォームとしてシェアを大きく伸ばしている Databricks には、これらを実現する機能が提供されています。

今回はそんな Notebook の巻き戻し機能である Revision history についてご紹介していきます!

 

Revision historyはDatabricks上の操作ログから差分保存を行い過去の作業のNotebook に復元することができる機能です。

本記事では以下の流れで紹介します

・Databricks概要

・Revision history機能概要

・Revision historyの使用方法

本記事で取り扱うDatabricks、notebook内の Databricks、Databricks上のnotebook、Revision historyの機能については2022年5月時点での情報です。

 

<Databricks概要>

今回の記事ではDatabricksとはそもそもなにかを簡単に紹介させて頂きます。

・データ分析スタートアップの米データブリックス(Databricks)

社が開発した統合分析プラットフォームです。ストリーミング

データの取得から統合されたNotebookインターフェイスの分析環境、構造・非構造問わず大規模なデータの高速処理等など、AI/MLを行う際に必要な技術がオールインで提供されるサービスです。

 

 

Databricksは誰でも簡単に高度なデータ解析や構築・デプロイが可能なことが特徴の1つですが、Databricks上の Notebookはローカルで実行するJupyter Notebook と比較し、様々な機能が提供されています。

■Notebook

Databricks上で展開されるNotebookは、

複数人での利用を前提としリアルタイムで編集・コメント等書き込む等の操作が可能です。

加えて同じnotebook内で複数言語を使用し、データ加工や分析を行うこともできるので用途に合わせた対応も可能です。

Databricksについて詳しく知りたい方はこちらの記事を参照してください。

 

<Revision history機能概要>

Revision historyとはnotebookの操作を復元、つまり戻すことができる機能です。

Databricksでは共同開発が可能であり、自分以外の作業者の変更履歴を残すこともできますが、Revision history ではさらに、自分や他者が行った操作が随時記録され、履歴として残されます。

そのため、失敗してしまった操作を戻したい!と思った際にその履歴を選択することで、選択したところまで操作を戻すことができるタイムマシンのような機能です。

この機能は自分が変更した部分だけではなく、共同作業を行っている人が操作ミスをしてしまったという際にもリカバリーができるため、共同編集におけるリスクを減らすことができます。

そんな Revision historyの操作方法等について紹介します。

 

<Revision history>の使用方法

Revision historyを使用するのはとても簡単で、主に以下の手順を踏んで使用されます。

・Revision historyを展開する

・過去の戻したい作業まで選択し戻す

この作業についてさらに詳しく紹介します。

 

■Revision historyを展開する

Revision historyは主に書き込んでいたコードを変更してしまった、前のものに戻したいといった際に使用するものです。使い方としては、開いているワークスペースの右上にRevision historyがあるので、そこをクリックします。

 

■過去の戻したい作業まで選択し戻す

Revision history をクリックし展開すると画像のように今までの変更履歴が示されています。戻したいRevisionを選択することで任意に戻すこと、古いバージョンのnotebookからコードをコピーすること等が可能です。

 

特に非同期かつ共同作業等行っている時には、消してはいけないコードを共同作業人が消してしまったという事案も多くあります。Revision historyは変更した時間が保存されているだけではなく、変更したユーザーも記録され、

重要な編集点が特定しやすく、過去のコードをコピーし現在の状態に持ってくることができます。

Databricksのツールについては弊社エンジニアが以前書いたこちらの記事を参照ください。

 

<まとめ>

ここではDatabricksのnotebook Revision historyを紹介しました。

 

・Revision historyはNotebookを過去の状態に戻す機能

・クラウド上のNotebookとして共同作業での利用で発生する削除などのリスクに対応

・過去のコードを持ち出しや、現在のコードを置き換え変更するなどの利用が可能

 

これらのデータ分析担当者にとっては嬉しい機能かと思います、今回ご紹介したnotebook Revision historyはnotebookの機能のごく一部です。Databricksは他にも多くの便利な機能が提供され、グローバルでブームとなっています。

ここまでDatabricksのnotebookの Revision history の機能について紹介していきましたがいかがでしょうか。

 

今回、株式会社ナレッジコミュニケーションでは、小売・消費財メーカー様向けのDatabricksのデータ分析セミナー【Databricks on AWS データ分析セミナー】を開催することになりました。ここでは紹介しきれなかったDatabricksの機能や動作についてハンズオン形式で、実際に触れることができます。

内容、参加URLは以下の通りになりますので、興味がある方はぜひご参加ください。

■開催日

5月17日(火)16時~17時30分

 

■ハンズオンセミナー タイトル

[Databricks on AWS データ分析セミナー]

小売・消費財メーカー様向け、ビジネス現場で始めるAIを活用した需要予測

 

■ハンズオンセミナーアジェンダ

①セミナーパート(データ分析PJの進め方等)

 

・機械学習システム運用に至るまでのハードル

・最新のデータ分析アーキテクチャの考え方 - MLOps

・AWS サービス概要

・まとめ

・AIプロジェクトにおける弊社ご支援 紹介

②ハンズオンパート(需要予測モデルの構築等)

・サンプルデータを活用した需要予測 ハンズオン

・全体統括/QA

 

■セミナーURL

https://knowcom.connpass.com/event/244566/

 

 


Databricks on AWS にデプロイ手順 (in 顧客管理VPC)

概要

AWS 上かつ顧客管理 VPC 上で稼働する Databricks の構築方法です。

詳細に解説されている記事が豊富にありますが (参考 URL 参照)、AWS ポータルの触り方を結構忘れていたので、Your VPC, custom で実装する手順を残しておきます。

手順

Cloudformation テンプレート

Cloudformation で構築します。
以下記事を参考にさせてもらいました。

DatabricksでCustemer Managed VPCにClusterをプロビジョニングする | DevelopersIO

https://dev.classmethod.jp

YAML でテンプレートを書き、ローカル環境などに保存します。
今回は、

  • VPC=/22
  • Subnet=/25
  • Region=ap-northeast-1a

で設定しています。
リソース名称や設定を細かく設定したい方は適宜変更しましょう。

[crayon-62fffdfc8084a244407847/]

スタックの作成

先ほど保存した YAML をつかって Cloudformation でスタックを作成します。

スタックの作成をクリック
image.png

YAML をアップロード、デザイナーで表示。
image.png

Databricks を稼働させる VPC 構成はこのような形に。
テンプレートは S3 に保存し、スタックの作成 (クラウドに↑アイコン)をクリック。
image.pngimage.png

ステップ2へと進み、スタックの名称を指定。
image.png

ステップ3のオプション設定は行わず、ステップ4レビューへと進み、スタックの作成をクリックすると、リソースの構築が始まります。
image.png

デプロイが完了したら VPC コンソールに移動し、以下パラメータを控えておきます。

image.png

Network Configrations 作成

Databricks の Admin コンソールに移り、network configration を設定します。別のWSとこれを共有することはないので、一意に識別しやすい名称を付けておきましょう

Network Configration 名称例
databricks-in-customer-managed-vpc-nw-config-01

先ほど拾ったパラメータも入力、Add をクリック

image.png

以下で完了
image.png

Credential configuration 作成

先ほどと同様に WS をデプロイするための権限も設定していきます。config の名称を入れ、External ID は控えておきます。まだ Add は押しません。

Network Configration 名称例
databricks-in-customer-managed-vpc-credential-config-01

image.png

AWS IAM コンソールに移り、ロールを作成をクリック
image.png

アプリケーションからのアクセスを許可する必要があるので、このロールを利用できる Databricks の AWS アカウントID (414351767826) を指定、External ID を入力。ロール名をいれてロールの作成をクリック。

Credential configuration 名称例
databricks-in-customer-managed-vpc-credential-01

image.png

作成したロールを選択し、インラインポリシーを記述。

image.png

書き換える必要のある変数は4つです。

変数 概要
ACCOUNTID 顧客の AWS アカウント ID
VPCID Cloudformation で作成した VPC の ID
REGION Databricks WS をデプロイするリージョン
SECURITYGROUPID Cloudformation で作成した SG の ID

インラインポリシーのひな形はこちら。

databricks-ws-inline-policy

[crayon-62fffdfc80859009321762/]
ポリシーの記述まで終わったら ロール ARN をコピーし、
image.png

Databricks コンソールの Role ARN にペースト、Add をクリック
image.png

これで Credential Configuration の設定は完了
image.png

Storage configuration 作成

最後にストレージの設定をします。Databricks の DBFS がここに収まる形です。

ストレージ名称とバケット名を入力、Generate Bucket Policy をクリックし、出力された JSON をコピーしたら、Add をクリック。

databricks-in-customer-managed-vpc-storage-01

image.png

AWS S3 コンソールへ移り、先ほど指定したバケット名で S3 を構築
image.png

バケットのバージョニングは有効化推奨です。
image.png

構築したバケットのアクセス許可からバケットポリシーの編集と進み、
image.png

先ほどコピーした JSON をペースト、変更の保存をクリックして完了です。
image.png

WS デプロイ

最後のステップです。

Workspace から Create Workspace と進み、
image.png

ワークスペースの名称、URL を入力、ここまでで作成した Configration 3つを選択、Save をクリック
image.png

ステータスが running になれば完成
2021-11-12_13h18_23.png

作成した WS を選択すると明細を確認できます。URL をクリックすると、
image.png

Databricks のルートアカウントでアクセスできます。
image.png

備考:デプロイがうまくいかない場合に確認すること

Credential Configuration の設定が以下で正しいかチェック
image.png

Service Control Policy でクロスアカウントアクセスを Deny しているかどうかチェック
もし Deny されているようなら Databricks がクロスアカウントの役割を引き受けられるようにホワイトリストでの登録が必要
image.png

参考 URL

トラブルシュートが必要な時は Databricks 弥生さんの記事群が参考になります。

Databricksクイックスタートガイド - Qiita

https://qiita.com

Databricks on AWSにおけるアカウントのセットアップとワークスペースのデプロイメント(実践編) - Qiita

https://qiita.com

Databricksにおける顧客管理VPC - Qiita

https://qiita.com

Databricksにおける顧客管理VPC(実践編) - Qiita

https://qiita.com

Databricksワークスペース(E2)作成時のトラブルシューティング - Qiita

https://qiita.com


Vue.js + axiosでLambdaのAPIを叩く方法

開発環境

  • Windows10
  • AWS Lambda
  • Vue.js

APIの作成

Lambda

[crayon-62fffdfc80d9f644334633/]
[crayon-62fffdfc80da5222817940/]

九州の都道府県を返すサンプルです。
サーバーは別のサイト(オリジン)から送られてきたhttpリクエストをブロックすることができます。
CSR (Cross-site Request Forgery) などの対策のためです。
許可する場合はサンプルのようにレスポンスヘッダーでAccess-Control-Allow情報を返す必要があります。

Access-Control-Allow-Origin : 許可するオリジンを指定できます。上の例はワイルドカードですべてのオリジンからのリクエストを許可しています。
Access-Control-Allow-Headers : 許可するリクエストヘッダーを指定できます。上の例はワイルドカードですべてのリクエストヘッダーを許可しています。
Access-Control-Allow-Methods : 許可するリクエストメソッドを指定できます。上の例はGET,POST,OPTIONSを許可しています。
オリジンから別のオリジンにアクセス権を許可する仕組みをCORS(Cross-Origin Resource Sharing)といいます

OPTIONSについては後程説明します。

API Gatewayの設定

リソースの作成

image.png

GETおよびOPTIONSメソッドを作成

image.png
image.png
image.png

上の関数をAPI化しました。

OPTIONSメソッドとは

サーバーからクライアントに対してアクセス権を返します。
クライアントからサーバーに対してOPTIONSリクエストを送ることをPreflight requestといいます。

サンプルの例では
まず、クライアントがPreflight requestをサーバーに送る。
サーバーがOPTIONSレスポンス(アクセス権)を返す。
クライアントはアクセス権を確認し、アクセス可能であればGETメソッドリクエストを送る。
サーバー側はGETレスポンスを返す。
という流れになります。

AWSが用意しているのCORSを使用することもできるのですが、正しく動作させることができなかったため自作することにしました。

Preflight requestはブラウザが自動的に送信するためクライアントの実装では意識する必要はありません

APIキーの必要性の設定

image.png

※ OPTIONSはAPIキーの必要性をfalseのままにしておく

image.png

ブラウザがPreflight requestを送るときにリクエストヘッダを追加することができないため、falseにしておいてください。
GETメソッドにはAPIキーを設定することができます。

デプロイ

image.png

Vue

プロジェクトにaxiosをインストール

[crayon-62fffdfc80dac144561169/]

サンプルコード

[crayon-62fffdfc80daf213689206/]

APIにGETリクエストを送ってレスポンスをitemsに保存。Viewでitemsの中身を表示しています。
OPTIONSリクエストは自動で送信されるため記述は必要ありません。

確認

image.png

APIから情報を取得するのに成功しています。

参考にさせていただいたサイト

CORSのプリフライトリクエスト(OPTIONメソッド)はAPI Keyの認証なしでOKにしておかないと失敗する話 | フューチャー技術ブロ...

 

オリジン間リソース共有 (CORS) - HTTP | MDN

https://developer.mozilla.org


【随時更新】AWS セキュリティ製品 まとめ

はじめに

AWSにはセキュリティを高めるためのサービスが豊富にあります。
それぞれがセキュリティを高める上でどんな役割を担っているのかについて、本記事では簡単に整理していきます。
過去に検証したことのあるサービスについては、[検証記事]のカラムにリンクを貼っております。

どんな人向け:
AWSってサービス多くて何がなんだか分からない って人。
AWSを使っている。 セキュリティを高めるために 何を使うか検討中 って人。

Identity & Access Management

サービス名 概要 検証記事
AWS Identity & Access Management (IAM) AWS のサービスやリソースへのアクセスを安全に管理する
AWS Single Sign-On AWS アカウントへの SSO アクセスを一元管理できる
Amazon Cognito ウェブ / モバイルアプリ の 「認証」・「許可」・「ユーザ管理」をサポートする
AWS Directory Service AWS のマネージド型 Microsoft Active Directory
AWS Resource Access Manager AWS のリソースを任意の AWS アカウントまたは AWS 組織内で簡単かつ安全に共有できる
AWS Organizations AWS リソースの増加やスケーリングに合わせて、環境を一元的に管理し統制する

検出

サービス名 概要 検証記事
AWS Security Hub セキュリティアラートを一元的に管理し、セキュリティチェックを自動化する あり
Amazon GuardDuty 脅威検出と継続的なモニタリングで AWSアカウント、ワークロード、データを保護する あり
Amazon Inspector 脆弱性を診断・自動でセキュリティ評価をする
AWS Config AWS リソースの設定を評価、監査、審査する
AWS CloudTrail ユーザーアクティビティと API 使用状況を追跡する
AWS IoT Device Defender IoT デバイスのセキュリティを管理する

インフラストラクチャの保護

サービス名 概要 検証記事
AWS ネットワークファイヤーウォール Amazon VPC に不可欠なネットワーク保護を簡単にデプロイする
AWS Shield マネージドでDDoS攻撃に対してアプリケーションを保護する
AWS Web Application Firewall (WAF) 一般的な攻撃やボットからアプリケーションや API を保護する あり
AWS Firewall Manager 多くのアカウント、アプリケーションにわたって一元的にファイアウォールのルールを設定、管理する

データ保護

サービス名 概要 検証記事
Amazon Macie 機械学習とパターンマッチングを使用して 大規模な機密データを検出して保護する
AWS Key Management Service (KMS) データの暗号化やデジタル署名に使用するキーを簡単に作成して管理する
AWS CloudHSM 暗号鍵の生成、保管、配布から廃棄までを管理し、サイバー攻撃から保護する
AWS Certificate Manager パブリックとプライベートの SSL/TLS 証明書を簡単にプロビジョニング、管理、デプロイする
AWS Secrets Manager データベース認証情報、API キー、その他機密情報を簡単にローテーション、管理、取得する

インシデントへの対応

サービス名 概要 検証記事
Amazon Detective セキュリティデータを分析および視覚化して、不審なアクティビティの根本原因を簡単に調査する あり
CloudEndure Disaster Recovery データセンターの障害やサーバーの破損、サイバー攻撃から物理・仮想・クラウドサーバーを保護する

コンプライアンス

サービス名 概要 検証記事
AWS Artifact AWS のコンプライアンスレポートにオンデマンドでアクセスできる
AWS Audit Manager AWS の使用状況を継続的に監査して、リスクとコンプライアンスの評価方法を簡素化する

まとめ

今回はAWSのセキュリティサービスの概要を整理してみました。
実際にサービスを触ってみないと分からないところもあるので、今後検証しては随時記事にしていきたいと思います。

参考

セキュリティ、アイデンティティ、およびコンプライアンス製品 – アマゾン ウェブ サービス (AWS)

https://aws.amazon.com


【AWS セキュリティ対策】Amazon Detective編

構成

こちらの記事は AWS セキュリティサービスを使ってみた シリーズの Part.3 の記事です。
他にも以下のサービスについてまとめております、ぜひご覧ください。

Part.1
AWS WAF
Part.2
Amazon GuardDuty
Part.3
AWS Detective (本記事)
Part.4
AWS Security Hub

【随時更新】 AWS セキュリティ製品一覧:
https://recipe.kc-cloud.jp/archives/17259

Amazon Detective とは

Amazon Detective では、潜在的なセキュリティ問題や不審なアクティビティの根本原因を簡単に分析、調査し、すばやく特定できます。Amazon Detective は、AWS リソースからログデータを自動的に収集し、機械学習、統計的分析、グラフ理論を使用して、リンクされたデータセットを構築します。これにより、より迅速かつ効率的なセキュリティ調査を簡単に行えます。

引用元:https://aws.amazon.com/jp/detective/

以下のタイプの AWS ログからデータを取得します。

  • Virtual Private Cloud (VPC) Flow Logs
  • AWS CloudTrail
  • Amazon GuardDuty

仕組み

ログイン試行、API コール、ネットワークトラフィックなどの時間ベースのイベントを自動的に抽出します。
また、GuardDuty によって検出された結果も取り込みます。

image.png

特徴

  • 異種のイベントをグラフモデルに統合
  • 効率的な調査のためのインタラクティブな視覚化
  • セキュリティに関する調査結果を調べるためのシームレスな統合
  • 事前にデータソースを統合したり、複雑な設定を維持したりする必要のないシンプルなデプロイ

料金

取り込まれたデータ 料金
最初の 1,000 GB/アカウント/リージョン/月 2.70USD/GB
次の 4,000 GB/アカウント/リージョン/月 1.35USD/GB
次の 5,000 GB/アカウント/リージョン/月 0.68USD/GB
10,000 GB 以上/アカウント/リージョン/月 0.34USD/GB

詳細:https://aws.amazon.com/jp/detective/pricing/

開始方法

ゴール

前提条件

  1. AWS にサインアップする
  2. Amazon GuardDuty が少なくとも 48 時間有効になっている
  3. アカウントデータボリュームは Detective クォータ内にある
  4. GuardDuty CloudWatch 通知の更新頻度は、デフォルトで6 時間です。GuardDuty 管理者アカウントはディテクターの設定を 15 分に変更することをお勧めします。
Amazon Detective の前提条件と推奨事項 - Amazon Detective

https://docs.aws.amazon.com

手順

手順はざっくり以下の通りです。

  1. Amazon Detective の有効化
  2. メンバーアカウントを招待
  3. データの抽出を確認
  4. Amazon Detective でのアクションと使用状況の追跡

1. Amazon Detective の有効化

Amazon Detective コンソールに移動→[開始方法]を選択します。

image.png

管理者アカウント向けの推奨事項が表示されます。

image.png

Detective 有効の前に、動作グラフ管理のために必要な IAM ポリシー を IAM プリンシパルにアタッチします。
このポリシーでは、Detective ですべての管理者アカウントアクションを実行できます。

IAM ポリシーをコピーします。

image.png

IAM ポリシー コンソールに移動 → [ポリシーの作成]を選択します。

image.png

[JSON]を選択 → コピーした IAM ポリシーをペースト → [次のステップ: タグ]を選択します。

image.png

今回はタグの設定をスキップします。
[次のステップ:確認]を選択します。

image.png

ポリシー名を入力して[ポリシーの作成]を選択すると、IAMポリシーが作成されます。

image.png

Detective のセットアップのページに戻り、[Amazon Detectiveを有効化]を選択します。

image.png

これで Detective が有効化されます。

image.png

Amazon Detective の有効化 - Amazon Detective

https://docs.aws.amazon.com

2. メンバーアカウントを招待

下図のような流れでメンバーアカウントを招待することができます。

image.png

[アクション]メニューから[アカウントを招待]を選択します。

image.png

招待したい AWS アカウント ID と E メールアドレスを入力します。

image.png

招待メールを編集することもできますが、今回は既定のままでいきます。

image.png

メンバーアカウント側でも メンバーアカウント用のIAMポリシーを設定する必要があります。
[招待]を選択します。

image.png

これで新しいメンバーが招待されました。

image.png

招待を受けたアカウントには以下のように通知が来ます。

image.png

[other notifications]タブ→[Detective member invitation]を選択します。

image.png

招待の詳細情報が表示されます。
招待を承認するには 以下の赤枠内のリンクをクリックします。

image.png

[招待を承諾]を選択します。

image.png

これで招待は承諾されました。

image.png

管理者アカウントでメンバーアカウントの有効化をします。
有効にしたいアカウントのチェックボックスにチェックを入れ、[アカウントの有効化]を選択します。

image.png

[有効化]を選択します。

image.png

3. データの抽出を確認

Detective を有効にすると、AWS アカウントのデータを動作グラフに取り込み、抽出し始めます。

ナビゲーションペインで[検索]を選択→[タイプを選択]メニューから項目の種類を選択します。
今回は[AWSアカウント]を見てみます。

image.png

下図のように、成功した呼び出しと失敗した呼び出しがグラフで確認できます。

image.png

下にスクロールしてアクティビティの詳細を確認します。
IPアドレスごとのAPIコールの種類や成功/失敗の数を見ることができます。

image.png

4. Amazon Detective でのアクションと使用状況の追跡

Detective アクティビティを追跡しやすくするために、[使用状況] ページには、取り込まれたデータ量と推定コストが表示されます。

image.png

管理者アカウントの場合は 動作グラフ全体のデータ量と推定コストが表示され、
メンバーアカウントの場合は 寄与する動作グラフ全体でアカウントのデータ量と予測コストが表示されます。

Amazon Detective でのアクションと使用状況の追跡 - Amazon Detective

https://docs.aws.amazon.com

動作グラフの使用状況とコストのモニタリング (管理者アカウント):https://docs.aws.amazon.com/ja_jp/detective/latest/adminguide/usage-tracking-admin.html

さいごに

Amazon Detectiveを使うと、AWS環境のセキュリティ問題を簡単に分析・調査できることが分かりました。
30日間の無料トライアル期間が設けられているのもいいですね。

参考ドキュメント

Amazon Detective のセットアップ - Amazon Detective

https://docs.aws.amazon.com


Amazon GuardDutyを使ってみた

構成

こちらの記事は AWS セキュリティサービスを使ってみた シリーズの Part. 2の記事です。
他にも以下のサービスについてまとめております、ぜひご覧ください。

Part.1
AWS WAF
Part.2
Amazon GuardDuty
Part.3
AWS Detective
Part.4
AWS Security Hub

【随時更新】 AWS セキュリティ製品一覧:
https://recipe.kc-cloud.jp/archives/17259

Amazon GuardDutyとは

Amazon GuardDutyは、セキュリティの観点から脅威リスクを検知するAWSマネージド・サービスです。悪意のある IP アドレスやドメインのリストなどの脅威インテリジェンスフィード1および Machine Learning を使用して、AWS 環境内の予期しない潜在的に未許可なアクティビティや悪意のあるアクティビティを識別します。

Amazon GuardDuty Intelligent Threat Detection in the AWS Cloud

要は、何らかの攻撃をAWSアカウントやAWS環境に検知した場合教えてくるサービスですね。

機能としては以下が挙げられます。

  • 機械学習による異常検知の仕組み
  • 難しい設定は不要。誰でも使えるサービス
  • 東京を含む、15のリージョンで使用が可能
  • EC2またはIAMにおける脅威を検出
  • 安価な料金体系で、30日間の無料体験有

料金も見ていきましょう。

    AWS CloudTrail 管理イベント分析   料金(100万イベント当たり)
 100 万イベント/月 4.72USD
  AWS CloudTrail S3 データイベント分析   料金(100万イベント当たり)
 最初の 5 億イベント/月 1.04USD
次の 45 億イベント/月 0.52USD
50 億を超えるイベント/月 0.26USD
  VPC フローログと DNS ログ分析     料金(GB当たり)
最初の 500 GB/月 1.18USD
次の 2000 GB/月 0.59USD
次の 7,500 GB/月 0.29USD
10,000 GB/月を超えた場合 0.17USD

※1 脅威インテリジョン:攻撃者の意図や能力・設備などに関す津情報を整理及び分析することで有益な知識を導き出し、使用可能な物に変えたもの

開始方法

開始方法は以下の通りになっております。

2021-04-08_15h04_05.png
「Amazon GuardDuty の開始方法」

なんだか簡単そうですね。

ゴール!

今回は、GuardDuty コンソールまたは API を使用したサンプル結果の生成をするところまでやります。

前提条件

  • AWSアカウントが必要になります

手順

手順はざっくり以下の3つです。

  1. AWSアカウントからAmazon GuardDutyを開く
  2. サンプル結果を表示する
  3. 結果を評価する

1. AWSアカウントからAmazon GuardDutyを開く

それではAWSアカウントにログインして、Amazon GuardDutyを開いていきましょう。
AWSマネジメントコンソール画面で「Amazon GuardDuty」と検索すると以下の画面が出てきます。

2021-04-08_14h50_47.png

今すぐ始めるをクリック!

サービスのアクセス権限画面になりました。

2021-04-08_15h01_47.png

「GuardDutyを有効化2」して行きましょう。
※2 GuardDutyを有効化すると、GuardDutyの30日間無料トライアルに自動的に登録されます。

image.png

このような画面が表示されます。

ここまでは難しくありませんね。

2. サンプル結果を表示する

GuardDutyは、開くと同時に結果が表示されます。
今回は何もサービスを利用していないIAMユーザーを利用してのデモになりますので、まだ画面には結果が表示されません。

それでは、サンプル結果を表示していきましょう。
画面左側のナビゲーションペインで [設定] を選択して下さい。

2021-04-08_17h50_26.png

クリックをしたら画面をスクロール。一番下ら辺に「結果のサンプル」といった項目が確認できます。こちらをクリック。

2021-04-08_17h51_02.png

これで完了です。
コンソール画面に戻りましょう。

3. 結果を評価する

不信なアクティビティのサンプルが表示されるようになりました。

2021-04-08_17h50_06.png

左側のアイコン「丸、四角、三角」は重要度を表しているそうです。

丸:L
四角:Medium
三角:High

表示されている結果では重要度の高いものが多く見受けられますので、優先的に対応していく必要がありますね。

さいごに

今回はAmazon GuardDutyの解説及びサンプル結果の表示までを行ってみました。
AWSでのセキュリティ対策に不安がある人にも使えるのは、流石AWSといったところでしょうか。

手間もかからず、安価な料金で使用できるのは嬉しいポイントですね。


【AWS セキュリティ対策】AWS Security Hub

構成

こちらの記事は AWS セキュリティサービスを使ってみた シリーズの Part.4の記事です。
他にも以下のサービスについてまとめております、ぜひご覧ください。

Part.1
AWS WAF
Part.2
Amazon GuardDuty
Part.3
AWS Detective

【随時更新】 AWS セキュリティ製品一覧:
https://recipe.kc-cloud.jp/archives/17259

はじめに

AWS Security Hubについてまとめてみました。
AWS Security Hubの概念から実際どのように使用するのか?といったところまで今回はまとめてみたいと思います。

概要

AWS Security Hubとは、
AWSサービスのセキュリティアラートを一元管理し、コンプライアンスチェックを自動化するサービスです。

複数のAWSサービスで発生するセキュリティアラートをそれぞれのサービスで管理するのは煩雑なので、AWS Security Hubを利用し、複数のAWSサービスで発生するセキュリティアラートを集約・管理、優先順位付けを行い、1つの管理画面で分かりやすく確認することができます。

AWS Security Hubを導入することで、複数のサービスにまたがって届く大量のセキュリティアラートをひとつづつ確認して処理する手間や時間を省略することができます。

機能

AWS Security Hubの主要なサービスは以下の3つになります。

  • 使用しているセキュリティサービスを一元管理
  • AWS パートナーネットワーク (APN) が提供するセキュリティソリューションと連携
  • CIS AWS Foundations Benchmarkコンプライアンスチェック

使用しているセキュリティサービスを一元管理

複数のAWSサービスで検知された優先度の高いセキュリティアラート、コンプライアンスの状態を集約された管理画面で分かりやすく確認することができます。

AWS Security Hubの一元管理の対象にできるAWSサービスは以下になります。

  • Amazon GuardDuty
  • Amazon Inspector
  • IAM Access Analyzer
  • Amazon Macie
  • AWS Firewall Manager

image.png

AWS パートナーネットワーク (APN) が提供するセキュリティソリューションと連携

AWS Security Hubでは、AWSのセキュリティサービスだけでなく、DeepsecurityといったAWS Security Hubが対応しているAWS パートナーネットワーク(APN)が提供するセキュリティソリューションが検出したセキュリティアラートも自動的に集約、一元管理してくれます。

AWS パートナーネットワーク(APN)は以下のリンクをご確認ください。
https://aws.amazon.com/jp/security-hub/partners/

CIS AWS Foundations Benchmarkコンプライアンスチェック

CIS(Center for Internet Security)は、インターネット・セキュリティ標準化に取り組むアメリカの非営利団体です。
CISがAWSのセキュリティ基準として発表したものが、CIS AWS Foundations Benchmarkになります。
CIS AWS Foundations Benchmarkを利用し、AWS環境がセキュリティ上の問題がないかチェック、修正すべき設定に優先順位を付けて監査結果を1つの画面に分かりやすく表示します。
監査結果から、修正すべき設定の数と現在のセキュリティ状態が把握できます。

定期的に必要なモニタリングを自動化できるのが便利ですね。

ただし、モニタリングは自動化できますがAWS Security Hubには自動修復機能はないのでセキュリティ上の問題が発生したときは管理者自身で対応する必要があります。

実際のAWS Security Hub管理画面

image.png

料金(USD)

コンプライアンスチェックの回数

※1アカウント、1リージョン、1か月あたりの料金

セキュリティアラート数 1チェック当たりの料金
最初の 100,000 0.0010 USD / 1チェックあたり
100,001~500,000 0.0008 USD / 1チェックあたり
500,001 以上 0.0005 USD / 1チェックあたり

検出結果の取り込みイベント

検出結果の取り込みイベント数 1イベント当たりの料金
Security Hub のセキュリティチェックに関連する、検出結果の取り込みイベント 無料
イベント/アカウント/リージョン/月あたり最初の 1 万回 無料
イベント/アカウント/リージョン/月あたり 1 万回を超える場合 0.00003USD/イベント

ゴール

今回はAWS Security Hubを有効化するところまでやっていきます。

手順

手順はざっくり以下の3つです。

  1. AWS コンソールにログインして AWS Security Hub を選択する
  2. AWS Config の有効化
  3. セキュリティ警告の管理を開始する

1. AWS コンソールにログインして AWS Security Hub を選択する

AWS Security Hubを有効化するために、AWSコンソールにログインします。
今回はIAMユーザでログインします。
image.png
AWSコンソールにサインインしたら、AWS Security Hubをクリックします。
image.png

2. AWS Config の有効化

AWS Security Hubコンソールに移動し、設定をしていきます。
2021-04-09_16h54_48.png
AWS Security Hubを有効化するために、AWS Configでリソースの記録を有効化する必要があります。
AWS Configコンソールの有効化は以下のリンクをご確認ください。
https://aws.amazon.com/jp/config/

AWS Configコンソールを有効化したら、ページ下のSecurity Hubの有効化をクリックします。

3. セキュリティ警告の管理を開始する

AWS Security Hubの有効化が完了すると以下のページに移動します。
こちらから各AWSセキュリティサービスのアラートを確認したり、
CIS AWS Foundations Benchmarkを基にしてAWS環境がセキュリティ上の問題がないかチェック、修正すべき設定に優先順位を付けて監査結果を1つの画面に表示できるようになります。
2021-04-09_17h02_02.png

これでAWS Security Hubの有効化が完了です。

AWS Security Hubを使ってみた感想

たったの3ステップでAWS Security Hubの有効化が完了しました。
今までの大量のセキュリティアラートを一括管理できるのはとっても便利だと思います。
必ず有効化すべきサービスの1つですね!

最後まで見ていただき、ありがとうございました!

参考資料

AWS Security Hub公式ドキュメント
https://docs.aws.amazon.com/securityhub/index.html


【AWS セキュリティ対策】AWS WAF編

構成

こちらの記事は AWS セキュリティサービスを使ってみた シリーズの Part.1 の記事です。
他にも以下のサービスについてまとめております、ぜひご覧ください。

Part.1
AWS WAF (本記事)
Part.2
Amazon GuardDuty
Part.3
AWS Detective
Part.4
AWS Security Hub

【随時更新】 AWS セキュリティ製品一覧:
https://recipe.kc-cloud.jp/archives/17259

AWS WAFとは

AWS WAF は、Amazon CloudFront ディストリビューション、Amazon API Gateway REST API、Application Load Balancer、AWS AppSync GraphQL API のいずれか に転送される HTTP および HTTPS リクエストのモニタリング可能にするウェブアプリケーションファイアウォールです。

引用元:https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/what-is-aws-waf.html

web ACLとは

AWS WAF では web ACL(ウェブアクセスコントロールリスト) を作成し、web ACL にルールを追加することで、紐づけたAWSリソースを保護します。
web ACL に適用するルールにより、ウェブリクエストへの処理方法が指定されます。

マネージド ルールグループとは

AWS WAF では マネージド ルールグループ といって、事前定義されたすぐに使用できる ルールのコレクション が用意されております。
web ACL にワンクリックで追加して 適用することができます。

マネージド ルールグループ一覧:https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/waf-managed-rule-groups.html

できること

基本的に、AWS WAF では以下のいずれかの動作を選択できます。

  • 指定したリクエスト以外のすべてのリクエストを許可する
  • 指定したリクエスト以外のすべてのリクエストをブロックする
  • 指定したプロパティに一致するリクエストをカウントする

保護条件のプロパティ

AWS WAF では、AWSより提供されるマネージド ルールグループの適用のほか、独自でルールを定義して適用することも可能です。
保護条件のプロパティは以下の通りです。

  • リクエストの発生元の IP アドレス
  • リクエスト送信元の国
  • リクエストヘッダーの値
  • リクエストに表示される文字列
  • リクエストの長さ
  • 悪意のある可能性がある SQL コードの有無
  • 悪意のある可能性があるスクリプトの有無

あわせて使いたいサービス

AWS Firewall Manager や AWS Shield を組み合わせて使用することで、包括的なセキュリティソリューションを作成できます。

AWS Firewall Manager:AWS WAF の管理を簡素化できます。
アカウント間で AWS WAF を使用したり、AWS WAF 設定を高速化したり、新しいリソースの保護を自動化したりします。

Shield Advanced:AWS WAF の専用サポートや高度なレポート機能・DDoS Response Team (DRT)の機能を追加します。
視性の高いウェブサイトを所有している場合やDDoS、頻繁に攻撃を受けやすい場合に有効です。

料金

作成する各 web ACL および web ACL ごとに作成する各ルールに対して請求されます。
さらに、web ACL によって処理された web リクエストの数に対して請求されます。

リソースタイプ 料金
Web ACL 5.00USD、月あたり (時間で案分)
ルール 1.00USD、月あたり (時間で案分)
リクエスト 0.60USD 100 万リクエストあたり

また、AWS Marketplace にて有料で提供されるマネージドルールグループを購入する場合は、出品者による料金設定に基づいて追加料金が請求されます。

詳細:https://aws.amazon.com/jp/waf/pricing/
こちらのリンク先に埋め込まれている料金計算ツールを使って、概算を見積もることも可能です。

開始方法

ゴール

今回は、web ACLの作成をするところまでやります。
独自のルール作成と、マネージド ルールグループの適用を行います。

前提条件

  1. AWS アカウントにサインアップする
  2. IAM ユーザーを作成する
セットアップ - AWS WAF、AWS Firewall Manager、AWS Shield Advanced

https://docs.aws.amazon.com

手順

手順はざっくり以下の通りです。

  1. web ACL を作成する
  2. 文字列一致ルールの追加
  3. AWS マネージド ルールグループ の追加
  4. web ACL の設定を完了する
  5. リソースのクリーンアップ

1. web ACL を作成する

AWS マネジメントコンソールにサインインし、AWS WAF を開きます。

[Create web ACL] から web ACLの作成に入ります。

image.png

web ACLの作成とAWS リソースへの関連付け

Name:web ACLの名前を入力します。
Description:web ACLの説明を入力します。(オプション)
CloudWatch metric name:必要に応じて CloudWatch 名を変更します。
Resource type:CloudFront ディストリビューションを選択します。
Region:Resource typeでCloudFront ディストリビューションを選択したことにより、自動でグローバルが選択されます。
Associated AWS resources:紐づける AWS リソースを追加します。今回は割愛します。

上記の設定が完了したら [Next] を選択します。

image.png

2. 文字列一致ルールの追加

独自のルールを作成する

[Add rules] → [Add my own rules and rule groups]の順に選択します。

image.png

Rule type で Rule builderを選択 → Rule visual editor を選択します。
※Rule visual editor のほかに Rule JSON editor も用意されております。
web ACLs 間で設定をコピーする際に便利です。

image.png

Name:ルール名を入力します。
Type:Regular ruleを選択します。

image.png

値 User-Agent のウェブリクエストの BadBot ヘッダーを検査するように設定していきます。

If a request:matches the statement(リクエストの場合ステートメントに一致)を選択します。
Inspect(検査):Headerを選択します。
Header field name(検査するヘッダー):User-Agentを入力します。この値では大文字と小文字は区別されません。
Match type(指定した文字列が User-Agent ヘッダーに表示される場所):Exactly matches string(文字列に完全一致)を選択します。
String to match(検索する文字列を指定):BadBotを入力します。
Text transformation(テキスト変換):Noneを選択します。

image.png

Action:Countを選択します。これにより、ルールに一致するウェブリクエストのメトリクスが作成されます。ルールが許可されるか、ブロックされるかどうかには影響しません。

[Add rule]を選択します。

image.png

3. AWS マネージド ルールグループ の追加

Add rules → Add managed rule groups の順に選択します。

image.png

AWS managed rule groupsの一覧を展開します。
追加するルールグループの [Action] 列の [Add to web ACL] の切り替えをオンにします。
今回は Core rule set をオンにします。

Core rule set とは

コアルールセット (CRS) ルールグループには、ウェブアプリケーションに一般的に適用可能なルールが含まれています。これにより、OWASP の出版物に記載されている高リスクの脆弱性や一般的な脆弱性など、幅広い脆弱性の悪用から保護されます。すべての AWS WAF ユースケースでこのルールグループを使用することを検討してください。

引用元:https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/aws-managed-rule-groups-list.html

image.png

[Add rules] を選択します。

image.png

4. ウェブ ACL の設定を完了する

更に追加したいルールがある場合は先程と同様の手順で追加します。
無い場合、 [Next] で次に進みます。

image.png

Set rule priority(ルールの優先順位の設定)

web ACL 内のルールおよびルールグループの処理順序を確認できます。

[Next] で次に進みます。

image.png

Configure metrics(メトリクスの設定)]

Amazon CloudWatch metrics:Amazon CloudWatch metrics で、ルールおよびルールグループに計画されたメトリクスを確認できます。
必要に応じて選択を解除したり、メトリクス名を変更したりします。

[Next] を選択します。

image.png

Review and create web ACL(web ACLの作成と確認)

設定内容に問題が無いか確認します。

image.png

[Create web ACL] で web ACL が作成されます。

image.png

web ACL が作成され、web ACL の一覧に表示されたことを確認します。

image.png

5. リソースのクリーンアップ

削除対象の web ACL を選択 → [Delete] を選択します。

image.png

確認の画面が出るので「delete」と入力して削除します。

image.png

さいごに

AWS WAF ではルールセットが多数用意されており、使いたいものをオンにするだけで簡単に使えることが分かりました。
次は 今回作成した web ACL を 他 AWS リソースに紐づけてみて、そのパフォーマンスを見ていきたいと思います。

参考ドキュメント

AWS WAF の開始方法 - AWS WAF、AWS Firewall Manager、AWS Shield Advanced

https://docs.aws.amazon.com