Azure Red Hat OpenShift 4 クラスターの Microsoft Entra 認証を構成する (CLI)
CLI をローカル環境にインストールして使う場合、この記事では、Azure CLI バージョン 2.30.0 以降を実行している必要があります。 バージョンを確認するには、az --version
を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。
Microsoft Entra アプリケーションの構成に使用するクラスター固有の URL を取得します。
リソース グループとクラスター名の変数を設定します。
<resource_group> を実際のリソース グループの名前に、<aro_cluster> を実際のクラスター名に置き換えます。
resource_group=<resource_group>
aro_cluster=<aro_cluster>
クラスターの OAuth コールバック URL を作成し、変数 oauthCallbackURL に格納します。
Note
OAuth コールバック URL の AAD
セクションは、後でセットアップする OAuth ID プロバイダー名と一致している必要があります。
domain=$(az aro show -g $resource_group -n $aro_cluster --query clusterProfile.domain -o tsv)
location=$(az aro show -g $resource_group -n $aro_cluster --query location -o tsv)
apiServer=$(az aro show -g $resource_group -n $aro_cluster --query apiserverProfile.url -o tsv)
webConsole=$(az aro show -g $resource_group -n $aro_cluster --query consoleProfile.url -o tsv)
oauthCallbackURL の形式は、カスタム ドメインでは少し異なります。
カスタム ドメイン (
contoso.com
など) を使用している場合は、次のコマンドを実行します。oauthCallbackURL=https://oauth-openshift.apps.$domain/oauth2callback/AAD
カスタムドメインを使用していない場合、
$domain
は 8 文字の英数字文字列になり、$location.aroapp.io
によって拡張されます。oauthCallbackURL=https://oauth-openshift.apps.$domain.$location.aroapp.io/oauth2callback/AAD
Note
OAuth コールバック URL の AAD
セクションは、後でセットアップする OAuth ID プロバイダー名と一致している必要があります。
認証のために Microsoft Entra アプリケーションを作成します。
<client_secret> をセキュリティで保護されたアプリケーション用パスワードに置き換えます。
client_secret=<client_secret>
Microsoft Entra アプリケーションを作成し、作成したアプリケーション識別子を取得します。
app_id=$(az ad app create \
--query appId -o tsv \
--display-name aro-auth \
--reply-urls $oauthCallbackURL \
--password $client_secret)
アプリケーションが含まれるサブスクリプションのテナント ID を取得します。
tenant_id=$(az account show --query tenantId -o tsv)
マニフェスト ファイルを作成して、ID トークンに含める省略可能な要求を定義する
アプリケーション開発者は、Microsoft Entra アプリケーションで省略可能な要求を使用して、アプリケーションに送信されるトークンに含める要求を指定できます。
次の処理に省略可能な要求を使用できます。
- アプリケーションのトークンに含める追加の要求を選択する。
- Microsoft Entra ID からトークンで返される特定の要求の動作を変更する。
- アプリケーションのカスタムの要求を追加してアクセスする。
Microsoft Entra ID によって返される ID トークンの一部として upn
を追加することで、OpenShift で email
要求を使用し、upn
にフォールバックして推薦ユーザー名を設定するよう構成します。
manifest.json ファイルを作成して、Microsoft Entra ID アプリケーションを構成します。
cat > manifest.json<< EOF
[{
"name": "upn",
"source": null,
"essential": false,
"additionalProperties": []
},
{
"name": "email",
"source": null,
"essential": false,
"additionalProperties": []
}]
EOF
Microsoft Entra ID アプリケーションの optionalClaims をマニフェストで更新する
az ad app update \
--set optionalClaims.idToken=@manifest.json \
--id $app_id
Microsoft Entra アプリケーション スコープ アクセス許可
Microsoft Entra ID からユーザー情報を読み取れるようにするには、適切なスコープを定義する必要があります。
Azure Active Directory Graph.User.Read スコープでサインインとユーザー プロファイルの読み取りを有効にする権限を追加します。
az ad app permission add \
--api 00000002-0000-0000-c000-000000000000 \
--api-permissions 311a71cc-e848-46a1-bdf8-97ff7156d8e6=Scope \
--id $app_id
Note
この Microsoft Entra ID のグローバル管理者として認証されていない限り、同意を与えるためのメッセージは無視することができます。 標準ドメイン ユーザーは、Microsoft Entra 資格情報を使用してクラスターに初めてログインするときに、同意を付与するように求められます。
ユーザーとグループをクラスターに割り当てる (省略可能)
Microsoft Entra テナントに登録されたアプリケーションは、既定ではテナントの正常に認証されたすべてのユーザーが利用できます。 Microsoft Entra ID により、テナントの管理者と開発者が、テナントのユーザーまたはセキュリティ グループの特定のセットにアプリを制限できるようになります。
Microsoft Entra のドキュメントに記載されている手順に従って、ユーザーとグループをアプリに割り当てます。
OpenShift OpenID 認証の構成
kubeadmin
の資格情報を取得します。 次のコマンドを実行して、kubeadmin
ユーザーのパスワードを調べます。
kubeadmin_password=$(az aro list-credentials \
--name $aro_cluster \
--resource-group $resource_group \
--query kubeadminPassword --output tsv)
次のコマンドを使用して、OpenShift クラスターの API サーバーにログインします。
oc login $apiServer -u kubeadmin -p $kubeadmin_password
Microsoft Entra アプリケーション シークレットを格納するための OpenShift シークレットを作成します。
oc create secret generic openid-client-secret-azuread \
--namespace openshift-config \
--from-literal=clientSecret=$client_secret
oidc.yaml ファイルを作成し、Microsoft Entra ID に対して OpenShift OpenID 認証を構成します。
cat > oidc.yaml<< EOF
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
name: cluster
spec:
identityProviders:
- name: AAD
mappingMethod: claim
type: OpenID
openID:
clientID: $app_id
clientSecret:
name: openid-client-secret-azuread
extraScopes:
- email
- profile
extraAuthorizeParameters:
include_granted_scopes: "true"
claims:
preferredUsername:
- email
- upn
name:
- name
email:
- email
issuer: https://login.microsoftonline.com/$tenant_id
EOF
構成をクラスターに適用します。
oc apply -f oidc.yaml
次のような応答が返されます。
oauth.config.openshift.io/cluster configured
Microsoft Entra ID によってログインを検証する
OpenShift Web コンソールをログアウトしてもう一度ログインしようとすると、Microsoft Entra ID でログインするための新しいオプションが表示されます。 数分待つ必要がある場合があります。