OIDC認証方法を構成する

HashiCorp VaultでOIDC認証方法を構成するには、CLIコマンドを使用するまたはAPIを使用するのいずれかを行います。API方式には、HCP Vault DedicatedまたはHCP Vaultのいずれかを使用できます。

CLIコマンドを使用する

この構成では、デフォルトのoidcマウントパスが使用されます。カスタムパス(okta-oidcなど)を作成した場合は、Oktaで統合するためにpath変数を更新する必要があります。

  1. 次のコマンドを実行して、OIDCをデフォルトの認証方法にします:
    #!/bin/bash 
    vault auth enable oidc
  2. このコマンドを実行して、vault-role-okta-defaultというロールを作成します:
    #!/bin/bash 
    vault write auth/oidc/role/vault-role-okta-default \
    	bound_audiences="$OKTA_CLIENT_ID" \
    	allowed_redirect_uris="$VAULT_ADDR/ui/vault/auth/oidc/oidc/callback" \
    	allowed_redirect_uris="http://localhost:8250/oidc/callback" \
    	user_claim="sub" \
    	token_policies="default"
  3. 次のコマンドを実行してOIDC認証方法を構成します:
    #!/bin/bash 
    vault write auth/oidc/config \
    	oidc_discovery_url="https://$OKTA_DOMAIN" \
    	oidc_client_id="$OKTA_CLIENT_ID" \
    	oidc_client_secret="$OKTA_CLIENT_SECRET" \
    	default_role="vault-role-okta-default"
    

    HCP Vaultでは、oidc_discovery_urloidc_client_id、およびoidc_client_secretが、前のセクションで構成した変数に設定されます。

  4. このコマンドを実行して、有効な認証方式を表示します:
    #!/bin/bash 
    vault auth list
    

APIを使用する

HCP Vault DedicatedまたはHCP Vaultのいずれかで次の手順を完了します。

HCP Vault Dedicated

  1. sys/auth/oidcエンドポイントでOIDC認証方法を有効にするリクエストを送信します:
    curl --header "X-Vault-Token: $VAULT_TOKEN" \
    	--header "X-Vault-Namespace: $VAULT_NAMESPACE" \
    	--request POST \
    	--data '{"type": "oidc"}' \
    	$VAULT_ADDR/v1/sys/auth/oidc		
  2. vault-role-okta-defaultロール定義が含まれるリクエストを送信します:
    #!/bin/bash 
    tee vault-role-okta-default.json <<EOF
    {
    	"bound_audiences": "$OKTA_CLIENT_ID",
    	"allowed_redirect_uris": [
    		"$VAULT_ADDR/ui/vault/auth/oidc/oidc/callback",
    		"http://localhost:8250/oidc/callback"
    	],
    	"user_claim": "sub",
    	"token_policies": ["default"]
    }
    EOF

    リクエスト内のallowed_redirect_urisは、前のセクションで定義したコールバックURLを使用します。user_claimは、一意の各ユーザーを識別する方法をアプリに伝えます。詳細は、「OpenID ConnectとOAuth 2.0」を参照してください。

  3. vault-role-okta-adminロールをセットアップするリクエストを送信します:
    curl --header "X-Vault-Token: $VAULT_TOKEN" \
    	--header "X-Vault-Namespace: $VAULT_NAMESPACE" \
    	--request POST \
    	--data @vault-role-okta-default.json \
    	$VAULT_ADDR/v1/auth/oidc/role/vault-role-okta-default	
  4. OIDC構成の定義が含まれるリクエストを送信します:
    tee oidc_config.json <<EOF
    {
    	"oidc_discovery_url": "https://$OKTA_DOMAIN",
    	"oidc_client_id": "$OKTA_CLIENT_ID",
    	"oidc_client_secret": "$OKTA_CLIENT_SECRET",
    	"default_role": "vault-role-okta-default"
    }
    EOF
    
    HCP Vaultでは、oidc_discovery_urloidc_client_id、およびoidc_client_secretが、前のセクションで構成した変数に設定されます。また、default_rolevault-role-okta-defaultに設定されます。
  5. OIDC認証方法を有効にするリクエストを送信します:
    curl --header "X-Vault-Token: $VAULT_TOKEN" \
    	--header "X-Vault-Namespace: $VAULT_NAMESPACE" \
    	--request POST \
    	--data @oidc_config.json \
    			$VAULT_ADDR/v1/auth/oidc/config

HCP Vault

  1. auth/oidcエンドポイントでOIDC認証方法を有効にするリクエストを送信します:
    curl --header "X-Vault-Token: $VAULT_TOKEN" \
    	--request POST \
    	--data '{"type": "oidc"}' \
    	$VAULT_ADDR/v1/sys/auth/oidc
  2. vault-role-okta-defaultロール定義が含まれるリクエストを送信します。
    #!/bin/bash
    tee vault-role-okta-default.json <<EOF
    {
    	"bound_audiences": "$OKTA_CLIENT_ID",
    	"allowed_redirect_uris": [
    	"$VAULT_ADDR/ui/vault/auth/oidc/oidc/callback",
    	"http://localhost:8250/oidc/callback"
    	],
    	"user_claim": "sub",
    	"token_policies": ["default"]
    }
    EOF	
  3. vault-role-okta-defaultロールを作成するリクエストを送信します:
    curl --header "X-Vault-Token: $VAULT_TOKEN" \
    	--request POST \
    	--data @vault-role-okta-default.json \
    	$VAULT_ADDR/v1/auth/oidc/role/vault-role-okta-default
  4. OIDC構成の定義が含まれるリクエストを送信します:
    #!/bin/bash
    tee oidc_config.json <<EOF
    {
    	"oidc_discovery_url": "https://$OKTA_DOMAIN",
    	"oidc_client_id": "$OKTA_CLIENT_ID",
    	"oidc_client_secret": "$OKTA_CLIENT_SECRET",
    	"default_role": "vault-role-okta-default"}
    EOF		
  5. OIDC認証方法を有効にするリクエストを送信します:
    curl --header "X-Vault-Token: $VAULT_TOKEN" \
    	--request POST \
    	--data @oidc_config.json \
    	$VAULT_ADDR/v1/auth/oidc/config

次の手順

グループおよびポリシーを構成する