SnapDiffの認証プロセスはどのようなものですか?
環境
- ONTAP
 - SnapDiff
 
回答
- NetApp SnapDiff バックアップは、ONTAPストレージシステムへのHTTPまたはHTTPS接続のために標準のユーザーレベルのユーザー名とパスワード認証を使用します。または、ONTAPシステム自体のWebアクセス構成によって有効化されるREST APIを使用してSnapDiff v3操作を行うこともできます
 - 特定のユーザーには、SnapDiff 機能へアクセスするための適切なONTAP権限が必要であり、接続は転送中のデータ暗号化のためにTLS/HTTPSを使用する必要があります
 - NetApp ONTAPシステムでSnapDiff v3 APIを認可して使用するには、ユーザー作成、ロール割り当て、必要なサービスの有効化に関わるいくつかの重要な手順に従う必要があります。以下はステップバイステップのガイドです:
 - SnapDiff 権限を持つロールの作成
 - SnapDiff および関連コマンドへのアクセスを許可するカスタムロールを作成する必要があります:
 
::>security login role create -vserver <SVM_NAME> -role snapdiff_role -cmddirname "snapdiff" -access all
 ::>security login role create -vserver <SVM_NAME> -role snapdiff_role -cmddirname "license" -access all
- SnapDiff アクセス用のユーザを作成します
 - HTTP(REST API)経由で認証するユーザを作成します:
 
::>security login create -vserver <SVM_NAME> -user-or-group-name snapdiff_user -application http -authentication-method ::>password -role snapdiff_role
- <SVM_NAME>をStorage Virtual Machine名に置き換えます
 - snapdiff_userのパスワードを設定するように求められます
 - HTTP/HTTPSアクセスを有効にする
 - SVMでHTTPまたはHTTPSが有効になっていることを確認します:
 
::>system services web show
- 有効になっていない場合は、有効にすることができます:
 
::>system services web modify -name http -enabled true
 ::>system services web modify -name ssl -enabled true
- また、有効なSSL証明書がインストールされ、SVMにバインドされていることを確認してください
 - LIFとサービスポリシーを確認します
 - SnapDiffに使用する論理インターフェイス(LIF)に、以下を含むサービスポリシーが設定されていることを確認します:
 
data-nfs
 management- https
- サービス ポリシーの確認と変更には、次のコマンドを使用します:
 
::>network interface service-policy show
- SnapDiff v3 APIを使用する
 - ユーザを作成してサービスを有効にすると、ベーシックHTTP認証を使用して認証できます:
 
Endpoint: https://<cluster_or_svm>/api/snapdiff/
 Auth: Basic Auth with snapdiff_user and password
 Headers:
- httpは完全にはサポートされていません。構文の強調表示はShellに基づいています
 
Authorization: Basic <base64_encoded_credentials>
 Content-Type: application/json
- curl または Postman を使用してテストできます:
 
curl -u snapdiff_user:password -k https://<cluster_or_svm>/api/snapdiff/volumes
 
 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SnapDiff v3 APIは、基本認証を使用して、HTTP要求ヘッダーにユーザー名とパスワードを含むBase64でエンコードされた文字列を送信することで機能します。以下に、その機能の仕組みを段階的に説明します:
- クレデンシャルの形式:
 - ユーザ名とパスワードをコロン(:)と組み合わせます:
 
snapdiff_user:your_password
- Base64 エンコーディング:
 
Encode the string above using Base64. For example:
 snapdiff_user:your_password → c25hcGRpZmZfdXNlcjp5b3VyX3Bhc3N3b3Jk
  
- エンコードされた文字列をHTTP要求ヘッダーに含めます:
 
- セキュリティに関する考慮事項
 - 転送時のクレデンシャルの暗号化には、必ずHTTPSを使用してください
 - クレデンシャルをスクリプトにハードコーディングしたり、プレーンテキストで保存したりすることは避けてください
 - セキュリティを強化するために、OAuth 2.0または証明書ベースの認証が利用可能で環境でサポートされている場合は、その使用を検討してください
 
 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- SnapDiff v3 APIはNetApp ONTAPで証明書ベースの認証を使用し、パスワードベースのログインをクライアント証明書に置き換えることでセキュリティを強化します
 - クライアントはユーザ名とパスワードを送信する代わりに、SSLハンドシェイク中にデジタル証明書を提示します。ONTAPは、この証明書を信頼された認証局(CA)に照らして検証し、証明書が設定されたユーザと一致する場合はアクセスを許可します
 - 仕組みと設定方法は次のとおりです:
 
- 証明書ベースの認証を設定する手順
 - クライアント証明書を生成する
 - OpenSSLを使用して証明書と秘密鍵を作成します:
 
openssl req -x509 -nodes -days 1095 -newkey rsa:2048 \
 -keyout test.key -out test.pem \
 -subj "/C=IN/ST=KA/L=Bangalore/O=YourOrg/CN=cert_user"
 test.pem: Public certificate
 test.key: Private key
 CN=cert_user: Must match the ONTAP user ID
- ONTAPに証明書をインストール
 
::> security certificate install -type client-ca -vserver <SVM_NAME>
- プロンプトが表示されたら、test.pemの内容を貼り付けます。
 - SSLを有効にしてユーザを作成する
 
::> security ssl modify -vserver <SVM_NAME> -client-enabled true
 
 security login create -vserver <SVM_NAME> \
 -user-or-group-name cert_user \
 -application http \
 -authmethod cert \
 -role snapdiff_role
- snapDiff_roleがSnapDiff APIにアクセスできることを確認します
 - 証明書を使用してAPI呼び出しを行います
 - curlまたはクライアント証明書をサポートするRESTクライアントを使用します:
 
curl -k --cert ./test.pem --key ./test.key \
 -X GET " https://<cluster_or_svm>/api/snapdiff/volumes"
 
 -k: Skips certificate verification (use only in testing)
 --cert and --key: Provide the client certificate and key
- 重要事項
 - CA署名証明書は本番環境に使用できます 1
 - 証明書認証は、http、ontapi、およびrestアプリケーションでサポートされます 2
 - SVMに有効なSSL証明書がインストールされ、HTTPSが有効になっていることを確認します。
 
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- OAuth 2.0を使用したSnapdiff V3認証は、業界標準の認証プロトコルです。ONTAPでは、REST APIクライアント(SnapDiff v3を使用するバックアップ アプリケーションなど)は、信頼された承認サーバー(Azure AD、Auth0、Keycloakなど)によって発行されたアクセス トークンを使用して認証できます
 - SnapDiff v3用のOAuth 2.0設定手順
 - 承認サーバーを準備する
 - OAuth 2.0準拠のプロバイダー(Microsoft Entra ID、Auth0、ADFS、Keycloakなど)を選択します
 - JWT(JSON Web トークン)をサポートし、JWKS URI(JSON Web キー セット)を公開していることを確認します
 - 承認サーバーのルート CA 証明書をインストールします
 - これによりONTAPはプロバイダーによって署名されたトークンを信頼できます
 - CLI の例:
 
security certificate install -type server-ca
- プロンプトが表示されたら、証明書の内容を貼り付けます
 - ONTAPで認証サーバーを定義します
 - CLI の例:
 
security oauth2 client create \
 -config-name my_oauth_config \
 -provider-jwks-uri https://<auth_server>/jwks \
 -application http \
 -issuer https://<auth_server>/issuer
- これはONTAPがプロバイダからのトークンを検証する方法を示します
 - RESTロールを作成してトークン要求にマッピングする
 - トークン内のスコープまたはグループ要求に一致するロールをONTAPで定義する
 - 自己完結型スコープまたは外部グループマッピング(ADグループなど)を使用できます
 
::>security login rest-role create -role snapdiff_role -cmddirname "snapdiff" -access all
- バックアップ アプリケーションまたはスクリプトは、次の条件を満たす必要があります:
 - OAuthプロバイダで認証する
 - 正しいスコープのトークンをリクエストする
 - APIリクエストにトークンを含める: