AlwaysOn SQLでの認証の使用
AlwaysOn SQLは、DSE認証を使用するように構成できます。
AlwaysOn SQLは、DSE認証を使用するように構成できます。
DSE 認証を有効にする場合は、 hive-site.xml 構成ファイルを変更して、JDBC 認証を有効にします。DSEは、パスワード認証とKerberos認証の構成をサポートしています。hive-site.xmlファイルには、認証(デフォルト)、パスワード認証、またはKerberos認証を使用しない、事前に構成された設定が含まれたセクションがあります。優先認証メカニズムのコメントを解除し、AlwaysOn SQLを再起動します。
AlwaysOn SQL はDSEプロキシ認証をサポートしています。クエリーを実行するユーザーは、JDBCを使用して認証されたユーザーです。ユーザーAmyがAlwaysOn SQLセッションを開始し、BobがJDBCセッションを開始した場合、クエリーはBobに代わってAmyが実行します。Amyは、Bobに代わってこれらのクエリーを実行するためのパーミッションを持っている必要があります。
AlwaysOn SQLのalwayson_sql_optionsで認証を有効にするには、次の手順に従います。
hive-site.xml
Sparkを使用する場合のhive-site.xmlファイルのデフォルトの場所:パッケージ・インストール | /etc/dse/spark/hive-site.xml |
tarボール・インストール | installation_location/resources/spark/conf/hive-site.xml |
手順
-
AlwaysOn SQLオプションで指定されたauth_userロールを作成し、ロールに次のパーミッションを付与します。
CREATE ROLE alwayson_sql WITH LOGIN=true; // role name matches auth_user // Required if scheme_permissions true GRANT EXECUTE ON ALL AUTHENTICATION SCHEMES TO alwayson_sql; // Spark RPC settings GRANT ALL PERMISSIONS ON REMOTE OBJECT DseResourceManager TO alwayson_sql; GRANT ALL PERMISSIONS ON REMOTE OBJECT DseClientTool TO alwayson_sql; GRANT ALL PERMISSIONS ON REMOTE OBJECT AlwaysOnSqlRoutingRPC to alwayson_sql; // Spark and DSE required table access GRANT SELECT ON system.size_estimates TO alwayson_sql; GRANT SELECT, MODIFY ON "HiveMetaStore".sparkmetastore TO alwayson_sql; GRANT SELECT, MODIFY ON dse_analytics.alwayson_sql_cache_table TO alwayson_sql; GRANT SELECT, MODIFY ON dse_analytics.alwayson_sql_info TO alwayson_sql; // Permissions to create and change applications GRANT CREATE, DESCRIBE ON ANY WORKPOOL TO alwayson_sql; GRANT MODIFY, DESCRIBE ON ANY SUBMISSION TO alwayson_sql;
詳細については、「DSE Sparkアプリケーションのパーミッションの設定」を参照してください。 -
ユーザー・ロールを作成します。
内部認証の場合:
CREATE ROLE 'user_name' WITH LOGIN = true;
Kerberosを使用する場合は、各ユーザーの完全なKerberosプリンシパル名に一致するロールを設定します。
CREATE ROLE 'user_name/example.com@EXAMPLE.COM' WITH LOGIN = true;
-
ユーザー・ロールにキースペースとテーブルにアクセスするためのパーミッションを付与します。
内部ロールの場合:
GRANT SELECT ON KEYSPACE keyspace_name TO 'user_name';
Kerberosロールの場合:
GRANT SELECT ON KEYSPACE keyspace_name TO 'user_name/example.com@EXAMPLE.COM';
-
AlwaysOn SQLロール(
auth_user
)がユーザー・ ロールを使用してコマンドを実行できるようにします。内部ロールの場合:
GRANT PROXY.EXECUTE ON ROLE 'user_name' TO alwayson_sql;
Kerberosロールの場合:
GRANT PROXY.EXECUTE ON ROLE 'user_name/example.com@EXAMPLE.COM' TO alwayson_sql;
- エディターでhive-site.xml構成ファイルを開きます。
-
コメントを解除し、hive-site.xmlで使用されている認証メカニズムを変更します。
- パスワード認証を使用する場合は、DSE でパスワード認証を有効にします。
- Kerberos認証を使用する場合は、 DSEでKerberosを有効にする必要はありません。AlwaysOn SQLには、独自のサービス・プリンシパルとキータブが必要です。
- JDBCからAlwaysOn SQLにログインするには、ユーザーがDSE でログイン・パーミッションを持っている必要があります。
以下の例は、Kerberos認証を有効にする方法を示しています。Kerberosドメインとキータブ・ファイルへのパスを変更します。
<!-- Start of: configuration for authenticating JDBC users with Kerberos --> <property> <name>hive.server2.enable.doAs</name> <value>true</value> </property> <property> <name>hive.server2.authentication</name> <value>KERBEROS</value> </property> <property> <name>hive.server2.authentication.kerberos.principal</name> <value>hiveserver2/_HOST@KERBEROS DOMAIN</value> </property> <property> <name>hive.server2.authentication.kerberos.keytab</name> <value>path to hiveserver2.keytab</value> </property> <!-- End of: configuration for authenticating JDBC users with Kerberos -->
-
AlwaysOn SQLを再起動します。
dse client-tool alwayson-sql restart