次の方法で共有


Apache Ambari ビューに対してユーザーを承認する

Enterprise セキュリティ パッケージ (ESP) が有効になっている HDInsight クラスターには、エンタープライズ グレードの機能が備わっています。Microsoft Entra ID ベースの認証もその 1 つです。 クラスターへのアクセスが提供されている Microsoft Entra グループに追加された新しいユーザーを同期して、特定のユーザーに特定のアクションの実行を許可できます。 Apache Ambari でのユーザー、グループ、およびアクセス許可の操作は、ESP HDInsight クラスターと標準 HDInsight クラスターの両方でサポートされています。

Active Directory ユーザーは、自分のドメイン資格情報を使用してクラスター ノードにサインインできます。 また、クラスターと他の承認済みエンドポイント (Hue、Ambari Views、ODBC、JDBC、PowerShell、REST API など) との対話も、ドメイン資格情報で認証することができます。

警告

Linux ベースの HDInsight クラスターでは、Ambari ウォッチドッグ (hdinsightwatchdog) のパスワードは変更しないでください。 パスワードを変更すると、スクリプト アクションを使用したり、クラスターでスケール操作を実行する能力が損なわれます。

新しい ESP クラスターをまだプロビジョニングしていない場合は、こちらの手順に従ってプロビジョニングしてください。

Ambari 管理ページにアクセスする

Apache Ambari Web UIAmbari 管理ページにアクセスするには、ブラウザーで https://CLUSTERNAME.azurehdinsight.net にアクセスします。 クラスターの作成時に定義したクラスタ アドミニストレーターのユーザー名とパスワードを入力します。 次に、Ambari のダッシュボードで [admin](管理) メニューの [Manage Ambari](Ambari の管理) を選択します。

Apache Ambari dashboard manage.

ユーザーの追加

ポータルを使用してユーザーを追加する

  1. 管理ページで、[ユーザー] を選択します。

    Apache Ambari management page users.

  2. [+ Create Local User](+ ローカル ユーザーの作成) を選択します。

  3. ユーザー名パスワードを指定します。 [保存] を選択します。

PowerShell を使用してユーザーを追加する

以下の変数を編集して、CLUSTERNAMENEWUSERPASSWORD を適切な値に置き換えます。

# Set-ExecutionPolicy Unrestricted

# Begin user input; update values
$clusterName="CLUSTERNAME"
$user="NEWUSER"
$userpass='PASSWORD'
# End user input

$adminCredentials = Get-Credential -UserName "admin" -Message "Enter admin password"

$clusterName = $clusterName.ToLower()
$createUserUrl="https://$($clusterName).azurehdinsight.net/api/v1/users"

$createUserBody=@{
    "Users/user_name" = "$user"
    "Users/password" = "$userpass"
    "Users/active" = "$true"
    "Users/admin" = "$false"
} | ConvertTo-Json

# Create user
$statusCode =
Invoke-WebRequest `
    -Uri $createUserUrl `
    -Credential $adminCredentials `
    -Method POST `
    -Headers @{"X-Requested-By" = "ambari"} `
    -Body $createUserBody | Select-Object -Expand StatusCode

if ($statusCode -eq 201) {
    Write-Output "User is created: $user"
}
else
{
    Write-Output 'User is not created'
    Exit
}

$grantPrivilegeUrl="https://$($clusterName).azurehdinsight.net/api/v1/clusters/$($clusterName)/privileges"

$grantPrivilegeBody=@{
    "PrivilegeInfo" = @{
        "permission_name" = "CLUSTER.USER"
        "principal_name" = "$user"
        "principal_type" = "USER"
    }
} | ConvertTo-Json

# Grant privileges
$statusCode =
Invoke-WebRequest `
    -Uri $grantPrivilegeUrl `
    -Credential $adminCredentials `
    -Method POST `
    -Headers @{"X-Requested-By" = "ambari"} `
    -Body $grantPrivilegeBody | Select-Object -Expand StatusCode

if ($statusCode -eq 201) {
    Write-Output 'Privilege is granted'
}
else
{
    Write-Output 'Privilege is not granted'
    Exit
}

Write-Host "Pausing for 100 seconds"
Start-Sleep -s 100

$userCredentials = "$($user):$($userpass)"
$encodedUserCredentials = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($userCredentials))
$zookeeperUrlHeaders = @{ Authorization = "Basic $encodedUserCredentials" }
$getZookeeperurl="https://$($clusterName).azurehdinsight.net/api/v1/clusters/$($clusterName)/services/ZOOKEEPER/components/ZOOKEEPER_SERVER"

# Perform query with new user
$zookeeperHosts =
Invoke-WebRequest `
    -Uri $getZookeeperurl `
    -Method Get `
    -Headers $zookeeperUrlHeaders

Write-Output $zookeeperHosts

Curl を使用してユーザーを追加する

以下の変数を編集して、CLUSTERNAMEADMINPASSWORDNEWUSERUSERPASSWORD を適切な値に置き換えます。 このスクリプトは、bash を使用して実行するように設計されています。 Windows コマンド プロンプトの場合は、若干の変更が必要になります。

export CLUSTER_NAME="CLUSTERNAME"
export ADMIN_PASSWORD='ADMINPASSWORD'
export USER="NEWUSER"
export USER_PASSWORD='USERPASSWORD'

# create user
curl -k -u admin:$ADMIN_PASSWORD -H "X-Requested-By: ambari" -X POST \
-d "{\"Users/user_name\":\"$USER\",\"Users/password\":\"$USER_PASSWORD\",\"Users/active\":\"true\",\"Users/admin\":\"false\"}" \
https://$CLUSTER_NAME.azurehdinsight.net/api/v1/users

echo "user created: $USER"

# grant permissions
curl -k -u admin:$ADMIN_PASSWORD -H "X-Requested-By: ambari" -X POST \
-d '[{"PrivilegeInfo":{"permission_name":"CLUSTER.USER","principal_name":"'$USER'","principal_type":"USER"}}]' \
https://$CLUSTER_NAME.azurehdinsight.net/api/v1/clusters/$CLUSTER_NAME/privileges

echo "Privilege is granted"

echo "Pausing for 100 seconds"
sleep 10s

# perform query using new user account
curl -k -u $USER:$USER_PASSWORD -H "X-Requested-By: ambari" \
-X GET "https://$CLUSTER_NAME.azurehdinsight.net/api/v1/clusters/$CLUSTER_NAME/services/ZOOKEEPER/components/ZOOKEEPER_SERVER"

Apache Hive ビューへのアクセス許可を付与する

Ambari には、Apache HiveApache TEZ のビュー インスタンスが備わっています。 Hive ビュー インスタンスへのアクセス権を付与するには、Ambari 管理ページに移動します。

  1. 管理ページの左側の [Views](ビュー) メニュー ヘッダーにある [Views](ビュー) リンクを選択します。

    Apache Ambari views view links.

  2. [Views](ビュー) ページの HIVE 行を展開します。 Hive サービスをクラスターに追加するときに、既定の Hive ビューが 1 つ作成されます。 必要に応じて Hive ビュー インスタンスをさらに作成することもできます。 Hive ビューを選択します。

    HDInsight Views - Apache Hive view.

  3. ビュー ページを下の方へスクロールします。 [Permissions](アクセス許可) セクションには、ビューのアクセス許可をドメイン ユーザーに許可するためのオプションが 2 つあります。

[Grant permission to these users] (次のユーザーにアクセス許可を付与)Grant permission to these users.

[Grant permission to these groups] (次のグループにアクセス許可を付与)Grant permission to these groups.

  1. ユーザーを追加するには、[Add User](ユーザーの追加) ボタンを選択します。

    • ユーザー名を入力し始めると、既に定義されている名前がドロップダウン リストに表示されます。

      Apache Ambari user auto completes.

    • ユーザー名を選択するか、最後まで入力します。 このユーザー名を新しいユーザーとして追加するには、[New](新規) ボタンを選択します。

    • 変更を保存するには、青色のチェック ボックスをオンにします。

      Apache Ambari grant user permissions.

  2. グループを追加するには、[Add Group](グループの追加) ボタンを選択します。

    • グループ名の入力を開始します。 既存のグループ名を選択 (または新しいグループを追加) するプロセスは、ユーザーを追加するときと同じです。

    • 変更を保存するには、青色のチェック ボックスをオンにします。

      Apache Ambari grant permissions.

ビューのアクセス許可をユーザーに割り当てるとき、余分なアクセス許可があるグループのメンバーにすることを望まない場合、ビューに直接ユーザーを追加する方法が便利です。 管理オーバーヘッドを減らすには、おそらくグループにアクセス許可を割り当てる方が簡単です。

Apache TEZ ビューへのアクセス許可を付与する

Apache Hive クエリや Apache Pig スクリプトによって送信されたすべての Tez ジョブは、Apache TEZ ビューのインスタンスを使用して監視したりデバッグしたりすることができます。 クラスターのプロビジョニング時に、既定の Tez ビュー インスタンスが 1 つ作成されます。

Tez ビュー インスタンスにユーザーとグループを割り当てるには、前述したように、[Views](ビュー) ページの TEZ 行を展開します。

HDInsight Views - Apache Tez view.

ユーザーまたはグループを追加するには、前のセクションの手順 3. ~ 5. を繰り返します。

ユーザーをロールに割り当てる

ユーザーとグループには 5 つのセキュリティ ロールがあります。以下、それらをアクセス権の高い順に示します。

  • クラスター管理者
  • クラスター オペレーター
  • サービス管理者
  • サービス オペレーター
  • クラスター ユーザー

ロールを管理するには、Ambari 管理ページに移動し、左側の [Clusters](クラスター) メニュー グループにある [Roles](ロール) リンクを選択します。

Apache Ambari roles menu links.

それぞれのロールに付与されているアクセス許可の一覧については、[Roles](ロール) ページの [Roles](ロール) テーブル ヘッダーの横にある青色の疑問符をクリックしてください。

Apache Ambari roles menu link permissions.

このページには、ユーザーとグループのロールを管理するための 2 種類のビュー (ブロック ビューとリスト ビュー) が用意されています。

ブロック ビュー

ブロック ビューには、各ロールが行ごとに表示されるほか、前述したような [Assign roles to these users](次のユーザーにロールを割り当て) オプションと [Assign roles to these groups](次のグループにロールを割り当て) オプションが表示されます。

Apache Ambari roles block view.

リスト ビュー

リスト ビューには、ユーザーとグループという 2 つのカテゴリの簡単な編集機能が用意されています。

  • リスト ビューの [Users](ユーザー) カテゴリには、すべてのユーザーが一覧表示され、各ユーザーのロールをドロップダウン リストで選択することができます。

    Apache Ambari roles list view - users.

  • リスト ビューの [Groups](グループ) カテゴリには、すべてのグループと、各グループに割り当てられているロールが表示されます。 この例に示したグループのリストは、クラスターのドメイン設定のアクセス ユーザー グループ プロパティに指定された Microsoft Entra グループから同期されています。 ESP が有効になっている HDInsight クラスターの作成に関するページを参照してください。

    Apache Ambari roles list view - groups.

    上の画像では、"hiveusers" グループに "クラスター ユーザー" ロールが割り当てられています。 これは読み取り専用のロールで、このグループのユーザーは、サービスの構成とクラスターのメトリックを表示することはできますが、変更することはできません。

Ambari に読み取り専用ユーザーとしてログインする

Microsoft Entra ドメイン ユーザー "hiveuser1" には、Hive ビューと Tez ビューに対するアクセス許可を割り当ててあります。 Ambari Web UI を起動してこのユーザーのドメイン資格情報 (電子メール形式の Microsoft Entra ユーザー名とパスワード) を入力すると、Ambari Views ページにユーザーがリダイレクトされます。 そこから、アクセス可能な任意のビューを選択することができます。 このユーザーが、このサイトの他の領域 (ダッシュボード、サービス、ホスト、アラート、管理ページなど) にアクセスすることはできません。

Apache Ambari user with views only.

Ambari にクラスター ユーザーとしてログインする

"クラスター ユーザー" ロールには、Microsoft Entra ドメイン ユーザー "hiveuser2" を割り当ててあります。 このロールは、ダッシュボードとすべてのメニュー項目にアクセスすることができます。 クラスター ユーザーは、選択できるオプションが管理者と比べて少なくなります。 たとえば hiveuser2 は、各サービスの構成を表示することはできますが、編集することはできません。

Apache Ambari dashboard display.

次のステップ