Apache Ozoneは、Hadoop分散データストアサービス上に構築された分散オブジェクトストアです。他の分散ファイルシステムでは処理が難しい数十億の大小のファイルを管理できます。 Ozoneは、Amazon S3、Kubernetes CSI、ネイティブHadoopファイルシステムAPIなどの豊富なAPIをサポートしています。これにより、Apache Hiveでのデータウェアハウス、Apache Nifiでのデータ取り込み、Apache Spark / Flinkでのストリーミング、Tensorflowでの機械学習など、さまざまな種類のビッグデータワークロードでオゾンを簡単に利用できるようになります。
さまざまなグループ間のコラボレーションを必要とするデータフットプリントと多面的なワークロードの増加に伴い、データセキュリティは最も重要です。 Apache Hadoop Ozone 0.4.0のリリース以降、コミュニティからの貢献によりオゾンセキュリティが追加されました。 ClouderaのCDPデータセンター7.0リリースには技術プレビューとしても含まれています。セキュリティは、認証、承認、監査、暗号化の4つの構成要素に分類できます。このブログでは認証の部分と、フォローアップの残りの部分について説明します。
認証は、オゾンコンポーネントに対するユーザーのIDを認識するプロセスです。 OzoneはApacheHadoopセキュリティアーキテクチャと互換性があり、Kerberosとセキュリティトークンを使用した強力な認証をサポートします。
Kerberosベースの認証
以下の図1に示すように、OM(Ozone Manager)、SCM(Storage Container Manager)、Datandoesなどのサービスコンポーネントはすべて、Kerberosを介して相互に認証されます。各サービスは、有効なKerberosプリンシパル名とキータブファイルを使用して構成する必要があります。これらのファイルは、サービスがセキュアモードで開始されたときにログインするためにサービスによって使用されます。 OM / SCM / Datanode Kerberos構成の詳細については、ApacheHadoopOzoneのドキュメントを参照してください。同様に、Ozoneクライアントは、メタデータ用のOzoneManagerや読み取り/書き込みブロック用のDatanodeなどのOzoneサービスにアクセスするために、有効なKerberosチケットまたはセキュリティトークンのいずれかを提供する必要があります。
セキュリティトークン
Hadoop委任トークンと同様に、オゾンセキュリティトークンには、発行者からの署名付き署名とともにトークン識別子があります。オゾンマネージャは、Kerberosで認証されたユーザーまたはクライアントアプリケーションに対して委任トークンとブロックトークンを発行します。トークンの署名は、トークンバリデーターによって検証され、発行者のIDを検証できます。このようにして、有効なトークン所有者は、トークンを使用して、発行者のKerberosチケットを持っているかのようにクラスターサービスに対して操作を実行できます。
委任トークン Ozone Managerによって発行されるため、トークン所有者は、ボリュームの作成やバケット内のオブジェクトの一覧表示など、OzoneManagerによって提供されるメタデータサービスにアクセスできます。委任トークンを使用してクライアントから要求を受信すると、オゾンマネージャーは、公開鍵を介して署名者の署名をチェックすることにより、委任トークンを検証します。取得、更新、キャンセルなどの委任トークン操作は、Kerberos認証された接続を介してのみ実行できます。
ブロックトークン オゾンマネージャによって発行/署名されるという意味で、委任トークンに似ています。これらは、クライアント要求にDatanodeでのブロック読み取りまたは書き込みが含まれる場合にOzoneマネージャーによって発行されます。明示的な取得/更新/キャンセルAPIで要求された委任トークンとは異なり、それらはキー/ブロックの場所情報とともにクライアントに透過的に渡されます。ブロックトークンは、歌手のオゾンマネージャーの公開鍵を使用してクライアントから読み取り/書き込み要求を受信すると、データノードによって検証されます。ブロックトークンは、クライアントが明示的に更新することはできません。有効期限が切れると、クライアントは新しいブロックトークンを取得するために、キー/ブロックの場所を再フェッチする必要があります。
S3シークレット
Ozoneは、OzoneS3Gatewayを介してAmazonS3プロトコルをサポートします。セキュアモードでは、Ozone Managerは、S3APIを使用してOzoneにアクセスするKerberos認証済みユーザーまたはクライアントアプリケーションに対してs3シークレットを発行します。これについては、オゾンS3ゲートウェイに関する後のブログで取り上げます。
オゾンセキュリティトークンはどのように機能しますか?
図2に示すように、従来のApache Hadoop委任トークンとブロックトークンは、トークンの発行者とトークン検証者の間の共有シークレットに依存して、トークンに署名および検証します。したがって、発行者とバリデーターが異なる場合、たとえばブロックトークンの場合、トークン発行者(namenode)とトークンバリデーター(datanodes)の間で同期するには、共有マスターキーを定期的にネットワーク経由で転送する必要があります。
代わりに、オゾンセキュリティトークンは証明書ベースのアプローチを採用しています。図3に示すように、トークン発行者とトークン検証者を証明書ベースの署名で完全に分離します。このように、共有シークレットがネットワークを介して転送されることはないため、トークンはより安全です。
セキュアモードでは、SCMはそれ自体をCA(認証局)としてブートストラップし、自己署名CA証明書を作成します。 DatanodeおよびOzoneManagerは、CSR(証明書署名要求)を介してSCMCAに登録する必要があります。 SCMは、Kerberosを介してDatanodeとOzone ManagerのIDを検証し、コンポーネントの証明書に署名します。署名された証明書は、OzoneManagerとDatanodeがそのIDを証明するために使用します。これは、委任トークン/ブロックトークンの署名と検証に特に役立ちます。
ブロックトークンの場合、オゾンマネージャー(トークン発行者)は秘密鍵でトークンに署名し、データノード(トークンバリデーター)はオゾンマネージャーの証明書を使用してブロックトークンを検証します。これは、オゾンマネージャーとデータノードの両方がSCMCA署名証明書を信頼するためです。
Ozone Manager(トークンの発行者と検証者の両方)がHA(高可用性)モードで実行されている場合の委任トークンの場合。複数のオゾンマネージャーインスタンスが同時に実行されています。 Ozone Managerインスタンス1によって発行および署名された委任トークンは、リーダーのOzone Managerが変更されたときに、両方のインスタンスがSCM CA署名付き証明書を信頼するため、OzoneManagerインスタンス2によって検証できます。オゾンHA設計ドキュメントの詳細については、こちらをご覧ください。
結論
認証は、ApacheHadoopOzoneセキュリティの最も重要な構成要素の1つです。これで、ApacheHadoopOzoneでサポートされている認証メカニズムとその機能について理解を深めることができます。これは、承認や監査などの他のオゾンセキュリティの柱を理解するのに役立ちます。
オゾンセキュリティ認証、監査、暗号化、GDPRに関するフォローアップ記事をお楽しみに。深く掘り下げることに興味がある場合は、オゾンセキュリティ設計ドキュメントから技術的な詳細を見つけることができます。
リファレンス
[1]ApacheHadoopオゾンアーキテクチャ
[2]オゾンのベンチマーク:ClouderaのCDP用次世代ストレージ
[3] Kerberosとは何ですか?・HadoopとKerberos:ゲートを超えた狂気
[4]ApacheHadoopオゾンドキュメント
[5]ApacheHadoopにセキュリティを追加する
[6]HDDS-505上のApacheHadoopオゾンHA設計ドキュメント。
[7]HDDS-4上のApacheHadoopオゾンセキュリティ設計ドキュメント。