AWS single sign-on(SSO)でdatabricksにログインしたい

はじめに

本記事ではdatabricks on AWSにAWS single sign-on(SSO)を使用してログインする方法をご紹介いたします。
AWS SSOは無料でかつ簡単な設定で即座に利用できるSSOサービスとなっており、
セキュリティの観点からもぜひとも利用しておきたい機能です。

前提条件

本記事内容はAWS SSOが有効になっているところからスタートします。
未完了の方は以下公式ドキュメントを参考に設定をお願いいたします。
https://docs.aws.amazon.com/ja_jp/singlesignon/index.html

目次

  1. AWS側の設定
  2. databricks側の設定
  3. いざlogin!

本題

1. AWS側の設定

AWS SSOのサービス画面内の左上「アプリケーション」をクリック
image.png

「新規アプリケーションの追加」をクリック
2020-10-20_10h38_09.png

ここでAWS SSO と連携するアプリケーションを選択します
画面中央の「アプリケーションの名前を入力します」の欄に"databricks"と記入
2020-10-20_10h39_49.png

databricksが表示されたらそれをクリック
画面右下の「アプリケーションの追加」をクリックして追加の完了です
2020-10-20_10h40_15.png

アプリケーションの画面に戻るとこのようにdatabricksが追加されていますので
クリックしてアプリケーション情報を確認しましょう
2020-10-20_10h52_40.png

databricks側に登録する情報をコピー、ダウンロードします
「AWS SSOサインインURL」「AWS SSO 発行者URL」をコピーし
「AWS SSO証明書」をダウンロードしておきます
2020-10-20_10h57_37.png

最後に、AWS SSOを使用してdatabricksにloginするユーザを割り当てます
「割り当て済みユーザ」タブ内の「ユーザの割り当て」から設定を行います
ユーザ個人を割り当てることもできますし、
databricksを使用するユーザが多数いる場合はグループを作成しておき、そのグループに割り当てるということも可能です
(この写真の例ではdatabricksという名前のグループに割り当てています)
2020-10-20_11h12_02.png

2. databricks側の設定

databricksのコンソール画面にloginします
右上の人の形のアイコンから「admin console」に移動します
2020-10-20_11h22_13.png

「Single Sign On」のタブをクリック

2020-10-20_13h40_03.png

以下表をもとにAWS側の設定でコピー、ダウンロードした情報を貼り付けていきます
2020-10-20_11h49_26.png

※2つのオプションについて(任意)

  • Allow auto user creation
    →databricksのアカウントを持っていないユーザがAWS SSOでログインしたときに自動的にアカウントを作成する
  • Allow IAM role entitlement auto sync
    →IAM credential passthroughのためのSAML属性からの資格情報を同期する
    (別途IAM credential passthroughの設定が必要なので本記事での説明は割愛します)

「Enable SSO」をクリックして
この画面になったらdatabricks側のSSOの設定が完了です
2020-10-20_13h41_28.png

3. いざlogin!

AWS Portalに入るとこのようにdatabricksアイコンが表示されているのでこのアイコンをクリックします
2020-10-20_12h01_35.png

無事loginできました!
2020-10-20_12h03_42.png

おわりに

今回はAWS SSOでdatabricksにログインする方法についてご紹介しました。
別記事で、databricks各種権限設定についてもご紹介する予定ですので、
そちらも併せてご覧いただければ幸いです。
最後までお読みいただきありがとうございました。


Amazon Rekognition Videoの活用法について考える

はじめに

Amazon Rekognition Videoとは、AWSの提供する機械学習を利用したビデオ分析サービスです。
Rekognition Videoを利用することで、動画中の数千のオブジェクトや顔、コンテンツを正確に検知し、追跡し、認識し、抽出し、節度を検出することができます。

※こちらの記事にて、デモの利用手順をご確認いただけます。
https://qiita.com/JJ33/items/848aaac7bc68a15c56af

3つの主な機能

チーム:動画に登場する人物を識別、追跡
有名人:登場人物が有名人か判定
オブジェクトとアクティビティ:動画内にある人、モノ、シチュエーションまでを解析

検出できるメタ情報

  • 物体(車両やペットなど)
  • シーン(都市やビーチ、結婚式など)
  • アクティビティ(小包の配達やダンスなど)
  • 有名人(有名人の名前と一意のID)
  • テキスト(英語テキストのみ)
  • 動作(ろうそくを吹く、火を消すなど)
  • 不適切なコンテンツ(ヌード、暴力、武器など)

各検索結果や検出にはタイムスタンプが付いているため、詳細なビデオ検索向けのインデックスをすぐに作成できるほか、さらなる分析のために興味のある箇所にすばやく移動することもできます。
また、対象がフレーム内のどの位置で検出されたのかを境界ボックスの座標で教えてくれます。

デモを試した結果

https://www.youtube.com/watch?v=L91yri_Vmbs
こちらの動画を借りてデモを使ってみました。
結果を一部掲載します。
(今回CelebritiesやModeration Labelsは検出されなかったためLabelsとPersonsのみ)

ケース1 ジェット機の前で写真を撮るシーン

2020-10-09_13h14_06.png
■Labels(Confidence 80以上のみ表示)
image.png
ジーンズやヘリコプターも認識できているようです!

■Persons
image.png
4人の人物を検知しています。

ケース2 女の子がドーナツを持っているシーン

2020-10-09_13h16_15.png
■Labelsimage.png
こちらのシーンではホットドッグを検出しています。
正確にはドーナツなのですが、食べ物の種類まで認識しているのはすごいですよね!

■Personsimage.png
先程のシーンと同じ女の子だとわかっているようです!

ケース3 ソファーで写真を撮るシーン

2020-10-09_15h34_03.png
■Labelsimage.png

室内で、シェルフなどの家具があることを認識しています。

■Personsimage.png
シーン1と同じ人物が2人いるとわかっているようです。

ケース4 家に荷物を運ぶシーン

2020-10-09_14h48_10.png

■Labelsimage.png
宅配をしているシーンであることも認識しています!これはすごい!

何に活用できそうか考えてみた

  • 不適切なシーンのカット、または警告表示
  • 検索機能を充実させる(タグ付けや顔検索)
  • 顔認証受付(施設の混雑防止や万引き防止につながる)
  • 人物トラッキングで犯人を捕まえる、行方不明者を捜す
  • 動画を投稿前に節度を検出し、不適切なシーンの公開を防ぐ
  • 検出できたメタデータを自動で組み合わせてハイライト動画の作成
  • 撮った動画を、カテゴリーや人物別で勝手にフォルダに分けるアプリ
  • SNS等で動画メディアを投稿する際、顔検索によって友達を自動でタグ付け
  • 小売業の分析(買い物客の行動、平均年齢層、性別分布、人々が表す感情を分析)
  • コンテンツ流動型広告(見ているコンテンツに見合う広告を選ぶ、良いタイミングで挟むなど)

さいごに

デモを試した結果、十分な精度で色々なメタ情報が得られました。(他の動画では自撮りをしているシーンやラーメンを作っているシーンも認識しました!)
アイデア次第で、顔認証受付やハイライト動画の作成など、様々な用途で活躍できそうだと思いました。今後の展開も楽しみですね。

参考リンク

https://aws.amazon.com/jp/rekognition/video-features/

使用した動画リンク

https://www.youtube.com/watch?v=L91yri_Vmbs


2020年度版初心者でも5分でわかる Amazon EC2について

はじめに

この記事では、AWSの代表的なサービス「Amazon EC2」について、以下をテーマに簡単な言葉でまとめていきます。

  1. EC2とは何か
  2. EC2のメリット
  3. EC2に関する用語
  4. 利用料金について

EC2とは

AWS上で仮想サーバを構築・利用できるサービス。
「Amazon Elastic Compute Cloud」の略称。

EC2のメリット

  • 従量課金制で低コスト
  • 最適なサーバーの作成がボタン1つで可能
  • スペックの変更が柔軟に行える
  • 簡単に冗長化を行える
  • 別サービスと組み合わせやすい

EC2に関する用語

インスタンス

AWS上の仮想サーバーのこと。
必要に応じて複数のインスタンスを立ち上げることで、柔軟なインフラ構築ができる。

AMI (Amazon Machine Image)

OSやソフトウェアの構成を記録したテンプレート。
AMIを使うことで同じ設定のサーバーをいくつも作成できる。
Amazon Linux、CentOS、Red Hat Enterprise Linuxなど。

キーペア

SSH接続において、ログインする際の認証に使用する公開鍵と秘密鍵のペア。
SSHとは、サーバーにインストールしたソフトウェアを操作するときに使用するしくみ。

EBS (Elastic Block Store)

EC2インスタンスと組み合わせて使うストレージボリューム。
ストレージとは、かんたんにいえばデータを記録する場所のこと。

セキュリティグループ

仮想的なファイアウォール機能。
EC2インスタンスへのアクセスを許可し、トラフィック(ネットワークを流れる情報)を制御する。

Elastic IPアドレス

静的な(固定の)グローバルIPアドレス。
EC2のインスタンスは、停止して起動しなおすとグローバルIPアドレスが変わってしまう→サーバーにアクセスできなくなる。
Elastic IPアドレスをインスタンスに結び付けることで、IPアドレスを固定することができる。

ELB(Elastic Load Balancing)

サーバーに集中するアクセスを、複数のサーバーやネットワークに振り分ける機能。

スナップショット

ある時点でのサーバーのディスク状態を保存する機能。
ソフトウェアやOSの更新時に、何かあったときにすぐ戻せるようにバックアップとしてとることが多い。

Auto Scaling

インスタンスの増減を自動で行う機能。
アクセスが少ないときは減らしてコストを削減。
多いときは増やしてアクセスに対応。

EC2の利用料金の考え方

AWSの料金は月に使った分だけ支払う「従量課金制」です。

①インスタンス使用料(稼働している時間×単価)+②EBSの料金(容量×単価)+③通信料金+④その他のオプション

また、AWSにはアカウントを新規作成後12か月間有効な「無料利用枠」というものがあります。
使用できるリソースには制限がありますが、1か月に750時間無料でインスタンスを利用することが可能です。

無料利用枠で使用できるリソース
・インスタンスタイプは t2.micro
・OSは Amazon Linux 1,2、Windows Server、Red Hat Enterprise Linux、SUSE Linux、Ubuntu Server

無料利用枠について詳しく知りたい方はこちら。
https://dev.classmethod.jp/articles/overall-summary-about-aws-free-tier/

おわりに

現在AWSの勉強を始めたばかりですが、今回は代表的なサービスであるAmazon EC2についてまとめました。今後学習を進めていく中で、他のサービスについても調査してまとめていきたいです。

参考書籍/記事


Enterprise Cloud Service Public Preview on AWS - Enterprise Security 編についてまとめて和訳してみた④

はじめに

今回は、2020年6月12日に Vinay Wagh 氏と Abhinav Garg 氏によって投稿されました「 Enterprise Cloud Service Public Preview on AWS 」で紹介されている Enterprise Security の1つである「 Customer managed keys for notebooks 」に関する内容を翻訳し、まとめてみました。

本記事のリンクは下記参照。
■リンク
Customer managed keys for notebooks
Enterprise Cloud Service Public Preview on AWS

エンタープライズセキュリティ

今回の AWS 上での Databricks のエンタープライズクラウドサービスにおけるエンタープライズセキュリティの主な内容は以下の4つです。
今回は、この5つの内の「Notebook の為の顧客管理キー」について、紹介したいと思います。

■エンタープライズセキュリティ
①Data Lake の真のポテンシャルを妨げないセキュリティ
②顧客管理VPC
③セキュアなクラスタ接続
④Notebook の為の顧客管理キー
⑤IAM 証明パススルー

Notebook の為の顧客管理キー

概要

セキュリティを重視する組織は、パブリッククラウドの使用、SaaS アプリケーション、そしてサードパーティサービスのリスクを評価するリスク管理プロセスがあります。
サードパーティのサービスプロバイダのリスクを軽減することで、外部サービスを使用するための強力なケースを構築できます。一部の規制された産業では、管理キーを使用して特定のタイプのデータを暗号化する必要があります。
これは、個人データやその他の機密情報を定期的に使用する部門にとって特に重要です。

ワークスペースノートブックは、主にデータベースの Databricks コントロールプレーン内に保存されます。Databricks プラットフォームでは独自のキーでノートブックを暗号化でき、キーはワークスペースの作成時に提供する必要があります。

操作方法

顧客管理のキーは、コントロールプレーンのワークスペースのノートブックを暗号化します。顧客は、クラウドサービスのキー管理システムのIDで指定された顧客管理キー(CMK)と呼ばれる取り消し可能な秘密キーを提供します。AWS では、顧客キーは AWS Key Management Service(KMS)によって管理されます。

さらに、Databricks では、ワークスペースごとに Databricks が管理するキー(DMK)を作成します。 DMKは、データ暗号化キー(DEK)と呼ばれる結合暗号化キーを生成するために、CMK にラップされます。Databricks は DEK を使用して、ワークスペースのノートブックを暗号化します。

DEK は、数回の読み込み/書き取り操作のためにメモリにキャッシュされ、定期的にメモリから削除されるため、新しいリクエストがあった場合は、クラウドサービスの鍵管理システムへの別のリクエストが必要になります。
キーを削除、あるいは取り消すと、キャッシュ時間間隔の終了時にノートブックの読み取りや書き込みが失敗します。
image.png

ノートブック用の顧客管理キーの追加

顧客管理のノートブックを追加するには、アカウント API を使用してワークスペースを作成する際に CMK を追加する必要があります。

CMK の設定方法:

  1. AWS KMS で対称キーを作成または選択するには、「対称 CMK の作成」または「キーの表示」の手順に従います。
  2. ワークスペース作成の際は、下記の3つの値が必要となるのでコピーを取りましょう。
  • Key ARN
  • Key alias
  • Key region
  1. キーポリシータブで、ポリシー表示に切り替えてキーポリシーを編集し、Databricks がキーを使用して暗号化および復号化処理を実行できるようにします。下記の様に編集します。
[crayon-5f9ca0f8d9729594905217/]
  1. キーを登録するには、「アカウント API を使用して新しいワークスペースを作成する」、の「ステップ 4:ノートブック用の顧客管理キーを構成する(オプション)」の指示に従います。

ステップ 4:ノートブック用の顧客管理キーを構成する

おわりに

Notebook の為の顧客管理キーに関するまとめは以上です。
詳細については、元記事をご参照ください。


Enterprise Cloud Service Public Preview on AWS - Enterprise Security 編についてまとめて和訳してみた③

はじめに

今回は、2020年6月12日に Vinay Wagh 氏と Abhinav Garg 氏によって投稿されました「 Enterprise Cloud Service Public Preview on AWS 」で紹介されている Enterprise Security の1つである「 Secure Cluster Connectivity 」に関する内容を翻訳し、まとめてみました。

本記事のリンクは下記参照。
■リンク
Secure Cluster Connectivity
Enterprise Cloud Service Public Preview on AWS

エンタープライズセキュリティ

今回の AWS 上での Databricks のエンタープライズクラウドサービスにおけるエンタープライズセキュリティの主な内容は以下の4つです。
今回は、この5つの内の「セキュアなクラスタ接続」について、紹介したいと思います。

■エンタープライズセキュリティ
①Data Lake の真のポテンシャルを妨げないセキュリティ
②顧客管理VPC
③セキュアなクラスタ接続
④Notebook の為の顧客管理キー
⑤IAM 証明パススルー

セキュアなクラスタ接続

概要

いくつかのデプロイメントタイプと Databricks サブスクリプションには、安全なクラスタ接続がオプションで含まれています。安全なクラスタ接続により、顧客の VPC には開いているポートも無く、Databricks ランタイムワーカにはパブリック IP アドレスもありません。一部の API では、これはパブリック IP(NPIP)と呼ばれます。

  • ネットワークレベルで各クラスタは、クラスタ作成中にコントロールプレーンセキュアクラスタ接続リレーへの接続を開始
  • クラスタはポート 443(HTTPS)を使用してこのセキュアな接続を確立し、Web アプリケーションや REST API に使用されるものとは異なる IP アドレスを使用
  • 新しい Databricks ランタイムジョブの開始やクラスタ管理の実行など、コントロールプレーンが論理的に開始するアクションはリバーストンネルを介してクラスタへの要求として送信される
  • データプレーン(お客様のVPC)には開いているポートが無く、Databricks ランタイムワーカにはパブリック IP アドレスは無い

クラスタ接続のメリット

  • 簡単なネットワーク管理
    • セキュリティグループでのポート構成やネットワークピアリング構成が不要
  • より簡単な承認
    • 優れたセキュリティと単純なネットワーク管理のため、情報管理チームが Databricks を PaaS プロバイダとして承認するのがより簡単に image.png

安全なクラスタ接続の使用

セキュアなクラスタ接続をワークスペースに利用する場合は、マルチワークスペース API を使用し新しいワークスペースを作成する必要があります。既存のワークスペースにセキュアなクラスタ接続の追加はできません。

おわりに

セキュアなクラスタ接続についての紹介は以上です。詳し内容については、本記事をご参照ください。


databricks公式ドキュメントやってみた~Secure access to S3 buckets using instance profiles(後編)~

はじめに

公式ドキュメントやってみたシリーズ第2弾です。
今回のテーマは
「Secure access to S3 buckets using instance profiles」です。
インスタンスプロファイルを使用してセキュアにS3バケットにアクセスする方法をdatabricks公式ドキュメントの手順に従ってやってみたいと思います。

今回の作業内容

今回行う作業は以下の8項目です。

※0.ターゲットS3バケットの作成

  1. S3バケットにアクセスするためのインスタンスプロファイルを作成
  2. ターゲットのS3バケットのバケットポリシーの作成
  3. databricks on AWSデプロイ時のIAMロールの確認
  4. ターゲットS3バケットにアクセスするためのIAMロールをEC2に付与
  5. インスタンスプロファイルをdatabricksにアタッチ
  6. インスタンスプロファイルを使用してクラスタを立ち上げる
  7. ノートブックから今回設定したS3へのアクセスを確認する

作業自体がやや長いのと、
細かいロールやポリシーの設定があるため

  • 前編(0~3)→AWS側の設定
  • 後編(4~7)→databricks側の設定

に分けてやっていきたいと思います。

本題

では、本題に入っていきましょう。

5. インスタンスプロファイルをdatabricksにアタッチ

前編.1で作成したIAMロールを選択し、インスタンスプロファイルARNをコピーします。
image.png

databricksにログインして
右側の人間マークからdatabricks adminコンソールに入る、
image.png

Instance Profileに移動、
image.png

Add Instance Profileをクリック。
image.png

Instance Profile ARNに先ほどコピーしたIAMロールインスタンスプロファイルARNを貼り付けてAddをクリック。
その下の2つの項目に関しては今回はチェックしないで進めたいと思います。
image.png

6. インスタンスプロファイルを使用してクラスタを立ち上げる

先ほど作成したインスタンスプロファイルを使用してクラスターの立ち上げを行います。
すでに作成済みもしくは新しいクラスタのページに移動します。
Advanced Optionsをクリックして項目を表示させると、一番下にInstance Profileを記入する欄がありますのでクリック
先ほど設定したInstance Profileがあると思うので、それを設定してクラスターを立ち上げます。
image.png

7. ノートブックから今回設定したS3へのアクセスを確認する

新しくノートブックを開きます。
名前はなんでもOKで、言語はPython、クラスタはインスタンスプロファイルを設定したものを選択してください。
ノートブックの画面を開いたら下記を実行します。s3-bucket-nameは今回のターゲットS3バケット名を記入します。

[crayon-5f9ca0f8d9d7c539485027/]

このようにターゲットS3バケットの中身が表示されたら無事今回の作業がうまくいっていることになります。
(この例ではターゲットS3バケット内にsampleとsample2という2つのフォルダを入れているのでこのような結果表示になっています。)
image.png

注)ターゲットS3バケットが空の状態でスクリプトを実行すると対象のディレクトリがありませんという内容のエラーを吐くので、必ずフォルダもしくはファイルを最低1つ入れた状態にしてください。

終わりに

以上がdatabricks公式ドキュメントやってみた~Secure access to S3 buckets using instance profiles(後編)~でした。
今回の内容を活用して、ぜひご自身の目的に合ったセキュアなdatabricks環境構築に取り組んでみてください。
最後までお読みいただきありがとうございました。
本記事がどなたかのお役に立てていれば幸いです。

※本内容はこちらの公式ドキュメントを参考にしております。
https://docs.databricks.com/administration-guide/cloud-configurations/aws/instance-profiles.html


databricks公式ドキュメントやってみた~Secure access to S3 buckets using instance profiles(前編)~

はじめに

公式ドキュメントやってみたシリーズ第2弾です。
今回のテーマは
「Secure access to S3 buckets using instance profiles」です。
インスタンスプロファイルを使用してセキュアにS3バケットにアクセスする方法をdatabricks公式ドキュメントの手順に従ってやってみたいと思います。

今回の作業内容

今回行う作業は以下の8項目です。

※0.ターゲットS3バケットの作成

  1. S3バケットにアクセスするためのインスタンスプロファイルを作成
  2. ターゲットのS3バケットのバケットポリシーの作成
  3. databricks on AWSデプロイ時のIAMロールの確認
  4. ターゲットS3バケットにアクセスするためのIAMロールをEC2に付与
  5. インスタンスプロファイルをdatabricksにアタッチ
  6. インスタンスプロファイルを使用してクラスタを立ち上げる
  7. ノートブックから今回設定したS3へのアクセスを確認する

作業自体がやや長いのと、
細かいロールやポリシーの設定があるため

  • 前編(0~4)→AWS側の設定
  • 後編(5~7)→databricks側の設定

に分けてやっていきたいと思います。

本題

では、本題に入っていきましょう。

0.ターゲットS3バケットの作成

今回の内容では、databricks on AWSのデプロイ時に使用したS3バケットとは別のS3バケットが必要となりますので、お持ちでない方は新たに作成しましょう。
既存のバケットを使用するという方は次に進みます。

1.S3バケットにアクセスするためのインスタンスプロファイルを作成

AWSにログインしてコンソール画面に入ります。
IAMのページに移動します。
サイドバーからロールを選択してロールの作成をクリック。
image.png

信頼されたエンティティの種類を選択→AWSサービス
ユースケースの選択→EC2
を選択して、次のステップに進みます。
image.png

アクセス権限、タグの設定は特に設定不要なのでそのまま進んでOKです。
最後の確認ページでロール名を記入してロールの作成をクリック。
image.png

作成したロールに戻ってインラインポリシーの追加をクリック。
ポリシーの作成ページでJSONのタブを選択し、以下スクリプトをコピぺ。
image.png

s3-bucket-name のところは今回使用するターゲットS3バケット名を記入してください。

[crayon-5f9ca0f8da03d618032812/]

ポリシーの確認に進んでポリシー名を記入し、ポリシーの作成をクリックでOK
作成したロールにもどって、ロールARNをコピーしておきましょう。
image.png

2.ターゲットのS3バケットのバケットポリシーの作成

AWSコンソール画面にもどってS3設定画面に移動します。
ターゲットS3バケット、アクセス権限、バケットポリシーの順で移動します。
バケットポリシーエディター欄で以下スクリプトをコピペします。
arn:aws:iam::aws-account-id-databricks:role/iam-role-for-s3-accessの部分は1.でコピーしたロールARNを貼り付けます。
s3-bucket-nameは今回使用するターゲットS3バケット名を記入します。

[crayon-5f9ca0f8da04c926099125/]

こんな感じでコピペできたら保存をクリックします。
image.png

S3バケットポリシーの設定は以上です。

3.databricks on AWSデプロイ時のIAMロールの確認

https://accounts.cloud.databricks.com/registration.html#login
からdatabricksにログインします。
サイドバーからAWS Accountを選択しデプロイに使用したロールARNを確認します。

image.png

4.ターゲットS3バケットにアクセスするためのIAMロールをEC2に付与

AWSの、ロール設定画面に戻ります。
3.で確認したdatabricks on AWS デプロイ時に使用したロールを選択します。
ポリシーの編集で以下スクリプトをコピペします。
arn:aws:iam::aws-account-id-databricks:role/iam-role-for-s3-accessには1.で作成したIAMロールのARNを記入します。
image.png
image.png

[crayon-5f9ca0f8da05a928160116/]

編集を終えたらポリシーの確認、変更の保存でOKです。

おわりに

databricks公式ドキュメントやってみた~Secure access to S3 buckets using instance profiles(前編)~
は以上です。
前半でAWS側の設定は完了となりましたので、後半ではそれを使ってdatabricks側の設定作業を行なっていきます。
お読みいただきありがとうございました。
引き続き後半もご覧いただけると幸いです。


Enterprise Cloud Service Public Preview on AWS - Enterprise Security 編についてまとめて和訳してみた②-2

はじめに

今回は、2020年6月12日に Vinay Wagh 氏と Abhinav Garg 氏によって投稿されました「 Enterprise Cloud Service Public Preview on AWS 」で紹介されている Enterprise Security の1つである「 Customer-managed VPC 」のリージョナルエンドポイントについて、まとめました。

本記事のリンクは下記参照。
■リンク
Customer-managed VPC
Enterprise Cloud Service Public Preview on AWS

リージョナルエンドポイント(セキュアなクラスタ接続限定)

カスタママネージド VPC を使用してセキュアなクラスタ接続を行う場合は、AWS グローバルエンドポイントと比較して、より直接的な接続を実現し、コスト削減のために AWS サービスへのリージョナル VPC エンドポイントのみを使用するよう VPC を構成可能です。
以下の4つが、カスタマー管理のVPC を持つ Databricks ワークスペースが到達する必要がある AWS サービスです。

  • STS
  • S3
  • Kinesis
  • RDS (※デフォルトの Databricks メタストアを使用する場合のみ VPC から RDS サービスへの接続が必要)

RDS 以外の3つのサービスにおける、VPCエンドポイントを使用したネットワークの動作、ノートブック、またはクラスターレベルの Spark 構成による動作の変化や構成について説明します。

STS リージョナル VPC エンドポイント概要

AWS STSへのデータプレーンアクセスの場合:

  • デフォルトでは VPC エンドポイントを設定すると、トラフィックは S3 VPC エンドポイントをバイパスし、グローバル STS URL を使用して送信します。全てのトラフィックがVPCエンドポイントを通過するようにするには、追加の設定が必要です。
  • 関連する Spark 構成をノートブック、またはクラスターレベルに追加すると、STS VPC エンドポイントを介してトラフィックが出ます。

Databricks では、アクセスが一時的に使用される場合に備えて、STS グローバル URL へのアクセスを許可する出口装置を構成することをお勧めします。たとえば、最初のワークスペース作成後、ノートブック、またはクラスタ Spark 構成とクラスターポリシのセットアップ前に、Databricks はグローバル URL を使用しなくてはいけません。

S3 リージョナル VPC エンドポイント概要

コントロールプレーン内のアーティファクトとログ保存のための S3 へのデータプレーンアクセスのために VPC エンドポイントを構成すると、次のような動作になります。

  • us-west-2、us-east-1 と us-east-2、リージョンへのトラフィックは S3 VPC エンドポイントを使用
  • us-west-1 のリージョンの場合、関連するエンドポイントがクロスリージョンのため、S3 VPC エンドポイントはバイパスされる

DBFS ルートストレージ用のS3へのデータプレーンアクセスと、VPCリージョン内の独自のS3データストレージ用。

  • デフォルトでは、VPC エンドポイントを設定すると、トラフィックは S3 VPC エンドポイントをバイパスし、グローバル S3 URL を使用して送信します。全てのトラフィックが VPC エンドポイントを通過するようにするには、追加の設定が必要です。
  • ノートブック、またはクラスタレベルで関連する Spark 構成を追加すると、トラフィックは S3 VPC エンドポイントを使用して送信されます

Databricks では、アクセスが一時的に使用される場合に備えて、S3 グローバル URL へのアクセスを許可する出口装置を構成することをお勧めします。たとえば、最初のワークスペース作成後、ノートブック、またはクラスタ Spark 構成とクラスターポリシのセットアップ前に、Databricks はグローバル URL を使用しなくてはいけません。

Kinesis リージョナル VPC エンドポイント概要

コントロールプレーンのロギングおよび使用状況データエンドポイントのKinesisへのデータプレーンアクセスの場合:

  • us-west-2、us-east-1 と us-east-2、リージョンへのトラフィックは Kinesis VPC エンドポイントを使用
  • us-west-1 のリージョンの場合、関連するエンドポイントがクロスリージョンのため、Kinesis VPC エンドポイントはバイパスされる

VPCリージョン内の顧客データストリームのKinesisへのデータプレーンアクセスの場合:

  • トラフィックは、Kinesis VPCエンドポイントを使用

リージョナルエンドポイントのセットアップ

ここでは、ノートブックやクラスタレベルでのアウトバウンドアクセスの制限や、Spark の設定を追加するためのオプションの手順と、リージョナルエンドポイントの設定方法を説明します。

S3 VPC ゲートウェイエンドポイントのセットアップ

AWS コンソール、または AWS CLI ツールで利用できます。

■CLI コマンド

[crayon-5f9ca0f8da36e901950455/]

STS VPC ゲートウェイエンドポイントのセットアップ

AWS コンソール、または AWS CLI ツールで利用できます。

■CLI コマンド

[crayon-5f9ca0f8da37c634192872/]

■AWS コンソール
1. AWS コンソール画面より、 VPC サービスの画面に移動
2. 左のナビゲーションより「エンドポイント」を選択し、「エンドポイントの作成」をクリック
3. 「サービス名」フィールドで sts を検索し、ユーザの利用しているリージョンのを選択
4. 「VPCフィールド」で Databricks デプロイメントと関連づいている VPC を選択
5. 同じフィールドで、ワークスペースのサブネットを選択(本番環境への導入時は、エンドポイントネットワークインターフェイス用のサブネットはワークスペースのサブネットとは異なる必要がある。)
6. 「DNS 名を有効化」にチェック
7. VPC で DNS ホスト名と DNS 解決が有効になっていることを確認
8. セキュリティグループ画面で、Datarbricks ワークスペースに関連づいたセキュリティグループを選択
9. ポリシー画面にて「フルアクセス」を選択
10. STS インターフェイスエンドポイントが AWS VPC コンソールのエンドポイントセクションに表示されていることを確認

おわりに

Customer Managed VPC の リージョナルエンドポイントに関するまとめは以上です。
詳細については、元記事をご参照ください。


databricks on AWS deploy手順~その3~

はじめに

databricks on AWSをdeployするまでの手順をご紹介したいと思います。
databricks on AWSのdeploy完了までには
databricks側とAWS側でいくつかの登録&設定作業が必要となっているため以下3章に分けてご説明いたします。

  • その1 databricksアカウントの作成
  • その2 AWSアカウントとの連携
  • その3 databricks用S3バケットとの連携 ← 今回はここ

本題

長かったdatabricks on AWS のdeploy手順もいよいよ最後のその3まできました。
今回もAWSアカウントとdatabricksアカウントの両方使用するので、
ログインした状態でご準備をお願いいたします。

➀databricks用S3バケットの作成

databricks用のS3バケットを作成します。
databricks公式サイトでも、databricks専用のS3バケットを作成することがベストプラクティスとされているのでそちらに則って進めていきたいと思います。

S3のコンソール画面に移動します。
「バケットを作成する」をクリックしてdatabricks用新規バケット作成作業に入ります。
image.png

名前とリージョン

バケット名は任意のものでOK(私はs3-for-databricks-testという名前にしました)
リージョンは「アジアパシフィック(東京)」
既存のバケットから設定をコピーは入力不要です。
バケット名とリージョンを記入したら「次へ」をクリック
スクリーンショット 2020-08-14 14.45.09.png

オプションの設定

ここでは様々なオプションを設定することができます。
今回は、databricks公式サイトの方で強く推奨されている「バージョニング」機能のみ設定してとりあえず先に進みたいと思います。
一番上の「バージョニング」にチェックを入れて「次へ」をクリック
スクリーンショット 2020-08-14 14.45.29.png

アクセス許可の設定

何も変更せずに「次へ」をクリック
スクリーンショット 2020-08-14 14.45.42.png

確認

バケット名
バージョニングの有効化
アクセス権限
を確認したら、「バケットを作成」をクリックして、
databricks用S3バケットの作成が完了です。
スクリーンショット 2020-08-14 14.46.10.png

➁バケットポリシーの作成

databricksコンソール画面から左部の「AWS Storage」欄を選択するとこの画面になります。
画面中央部の空欄に作成したdatabricks用S3バケット名を記入して「Generate Policy」をクリック。
image.png

生成されたバケットポリシーをコピーしておく。
image.png

S3コンソール画面に戻って
「databricks用S3バケット」→「アクセス権限」→「バケットポリシー」の順に進みます。
バケットポリシーエディターに先ほどコピーしたバケットポリシーを貼り付けます。
画面右側の「保存」をクリック。

image.png

databricksのAWS Storage画面に戻り
「Apply Change」をクリック。
このような画面になったらS3の設定完了です。
image.png

➂Deploy Databricks

databricksのコンソール画面に戻り、
画面左部から「Deploy Databricks」を選択するとこの画面になります。
空欄にチェックをいれて「Deploy」をクリック。
Deployが完了するまで30分ほどかかります。
image.png

deployが完了するとdatabricksからこのようなメールが届き、
image.png
databricksコンソール画面でもこのような表示になります。
image.png

以上で、作業は終了です。

おわりに

3章にわたるdeploy作業も今回でついに終わりを迎えました。
お疲れさまでした。
本記事がどなたかのお役に立てていれば幸いです。

今後も引き続きdatabricks公式ドキュメントを参考に記事をupしていく予定です。


databricks on AWS deploy手順~その2~

はじめに

databricks on AWSをdeployするまでの手順をご紹介したいと思います。
databricks on AWSのdeploy完了までには
databricks側とAWS側でいくつかの登録&設定作業が必要となっているため以下3章に分けてご説明いたします。

  • その1 databricksアカウントの作成
  • その2 AWSアカウントとの連携 ← 今回はここ
  • その3 databricks用S3バケットとの連携

本題

AWSアカウントとの連携方法は

  • クロスアカウントロールを使用する方法
  • アクセスキーを使用する方法

の2種類がありますが、databricks公式サイトではクロスアカウントロールを使用する方法を強く推奨しているので、今回はそちらの方法で進めて行こうと思います。
ここからはAWSアカウントとdatabricksアカウントを使用するので、
両方ログインした状態のページのご用意をお願いいたします。

➀databricksアカウント設定

databricksコンソール画面から、サイドバー内「AWS Account」を選択
「Deploy to AWS using Cross Account Role」にチェック
AWS Regionは「ap-northeast-1:Asia Pacific(Tokyo) Region」を選択
External IDはIAMロール作成時に使用するので、コピーしておいてください
ここまで終えたら一旦AWS側の設定に移ります。
image.png

➁クロスアカウントロールとアクセスポリシーの作成

AWSコンソール画面からIAMサービスのページへ移動します。
(検索欄でIAMと入れれば移動できます。)

画面左部のサイドバーから「ロール」を選択。
image.png

「ロールの作成」をクリック。
「別のAWSアカウント」を選択。
「このロールを使用できるアカウントを指定する」の必要事項欄を埋めていきます。
アカウントID : 414351767826
オプション : 外部IDが必要にチェック
外部ID : 本題➀でコピーしたExternal IDをペースト
3つの記入が済んだら「次のステップ:アクセス権限」をクリック
image.png

何もせず「次のステップ:タグ」をクリック
image.png

何もせず「次のステップ:確認」をクリック
image.png

ロール名を記入して「ロールの作成」をクリック
image.png

IAMの画面に戻り、サイドバーから「ロール」を選択。
ロール一覧内から作成したロールを選択
image.png

画面右にある「インラインポリシーの追加」をクリック
image.png

JSONのタブを選択し、以下コードをコピペ
「ポリシーの確認」をクリック

[crayon-5f9ca0f8da5fe941368425/]

image.png

ポリシー名を記入して、「ポリシーの作成」をクリック
image.png

再度ロールのページに戻って、「ロールARN」をコピー
image.png

➂databricksアカウント設定残り

本題➀で使用していたdatabricksの画面に戻ります。
本題➁でコピーしておいたロールARNをペーストして「Next Step」をクリック
image.png

自動的にS3設定画面に移動したら、その2の作業は無事完了です。
image.png

おわりに

今回その2ではAWSアカウントとの連携作業を行いました。
次回その3ではいよいよ最後のS3との連携作業を行います。
引き続き頑張りましょう!
お疲れ様でした。