OPS

ニフクラ CLI(コマンドラインツール)、意外な注意点・マルチアカウントの権限比較など

2022.10.04

本記事のポイント

NIFCLOUD(以下、ニフクラ)とは、VMwareで仮想化したパブリッククラウドコンピューティングサービスです。

ストレージ、お客様環境との接続、セキュリティ対策等のメニューを豊富に取り揃えており、お客様は画面操作だけで各機能を追加できます。



はじめに

マルチアカウントとは、ニフクラをご利用中のお客様が、操作範囲に制限を持たせたアカウントを作成できる機能です。

以前私がNIFCLOUD CLI(ニフクラ コマンドラインツール)を使用した際、想定しない実行結果「NULL」が戻り値として出力されてしまい、原因が分からず苦労した事がありました。

そこで今回は、ニフクラ CLIやマルチアカウントの権限などの概要をおさらいすると共に、意外な注意点や解決策についてご紹介します。

ニフクラ CLI(コマンドラインツール)とは

ニフクラ CLIとは、ニフクラ上でリソースの作成や停止、ステータス参照などの操作を可能にするコマンドラインツールです。操作の自動化が容易に実現できる非常に便利なもので、注意点をご紹介する前に、まずは設定方法や利用例からご紹介します。

ニフクラ CLIの設定方法

はじめに、こちらのリンクから「ニフクラ CLI 8.0.2」をダウンロードし実行環境にインストールしてください。

次に、CLIの実行環境としてJRE(Javaランタイム環境)が必要となるため、オラクル社が運営するこちらのサイトよりJREをダウンロードし、CLI実行環境にインストールします。

コマンドラインツールの動作には、以下の環境変数を設定する必要があります。

環境変数 説明
NIFTY_CLOUD_HOME コマンドラインツールを展開したパス
NIFTY_CLOUD_URL ニフクラAPIのサーバーのURL
JAVA_HOME Javaをインストールしたディレクトリのパス
NIFTY_ACCESS_KEY_ID AccessKeyIDの文字列
NIFTY_SECRET_KEY SecretAccessKeyの文字列

続いて、事前準備のためCLIの実行ユーザーを管理者権限で作成します。ここでは、ユーザー名を「OPS_administrator」としました。マルチアカウントとは、操作範囲に制限を持たせたアカウントを作成できる機能です。

その後、「OPS_administrator」ユーザーの AccessKeyIDとSecretAccessKey を確認し、環境変数を設定します。

AccessKeyIDとSecretAccessKey を確認し、環境変数を設定

ニフクラAPIのサーバーのURLについては、下記から確認してください。
https://pfs.nifcloud.com/api/endpoint.htm

以上で、実行環境の準備は完了です。

ニフクラ CLIの使用例

ニフクラ CLIの実行例として、「nifty-reboot-instances」を用いて指定したサーバーの再起動を実施します。この際、事前準備として、サーバー名「TechOPS」を作成しているものとします。

サーバー名「TechOPS」で作成

コントロールパネルにて確認を実施したところ、ステータスがオンラインから処理中に変化し再起動が実施されたことが確認できました。

再起動が実施されたことを確認

マルチアカウント 権限比較

ニフクラでは、「管理者権限」として作成したアカウントについては、全ての実行が可能です。しかし、「運用者権限」「閲覧権限」として作成したアカウントについては、そのままでは実行自体ができないAPIや、APIの実行は可能だが、操作できない処理が細かく決められています。

そのため、ニフクラを利用する場合は、こちらの公式サイトからマルチアカウントの権限比較表を確認するようにしてください。

実行権限が不足している場合には、運用者権限・閲覧権限のユーザーには、許可する操作を個別に定義したポリシーを追加することが可能な為、事前にどのアカウントでどのような操作を実行させるかを精査・管理する必要があります。

例えば、「nifty-reboot-instances」を使用したサーバー再起動については管理者権限、運用者権限にて実行可能だが、閲覧権限では許可されていない操作となります。

確認の為、CLIの実行ユーザー「OPS_administrator」の権限を閲覧権限に変更してください。

CLIの実行ユーザー「OPS_administrator」の権限を閲覧権限に変更

同操作を実施した結果、戻り値として下記メッセージが表示され、再起動操作が実行されないことを確認しました。

Client.AuthFailurePermission.MultiAccount: You don't have enough rights to operate this API.

IP許可制限

さらにセキュリティを強化する方法として、IP許可制限があげられます。これは、コントロールパネルへのログイン、CLIを実行する際に利用している環境の外部接続時のグローバルIPアドレスを制限する機能で、ホワイトリスト形式で設定していきます。以下は、許可されていないグローバルIPアドレスからCLIを実行した際の出力例です。

Client.Inoperable.IpAddress.NotAllowedIpAddress:Access denied for your IP Address 'X.X.X.X'.

※X.X.X.X は実行した環境のグローバルIPアドレス

マルチアカウントの操作方法(許可操作の追加・削除、権限変更、IP許可設定追加)についての操作方法については下記ページをご確認ください。
https://pfs.nifcloud.com/help/acc/multi_operation.htm

あまり知られていない注意点

あまり知られていませんが、CLIを利用する際の注意点としてJavaがSDKに対応していないケースがあります。その場合、同じ実行アカウント・同じAPIの操作、同じ実行内容にもかかわらず、想定しない実行結果「NULL」が戻り値として出力されたりします。

試しに『JDK-16.0.1』を使用してコマンド(nifty-describe-instances)を実行しましたがこちらも実行結果が「NULL」となり、別のAPI「nifty-describe-instance-attribute」でも同事象が再現されました。

回避策についてまとめられている資料や情報が見当たらなかったため、処理を追加する際には実行内容・コマンドに正しい自信があっても、使用しているJavaでの実行可否について確実に確認する事をおすすめします。

また、使用しているJavaを別のバージョンへ入れ替えることで正常に実行される場合がありますので、もし「NULL」で返ってきた場合、バージョンの入れ替えもご検討ください。

まとめ

いかがでしたでしょうか。

ニフクラは数多くのCLIが用意されており、簡単な環境構築や自動化の設定であれば簡単に行える、非常に便利なものです。私がつまずいた点と同じ事象が起き悩んでいる方がいらっしゃいましたら、少しでも助けになれば幸いです。

ここまでお読みいただき、ありがとうございました。