Junos OS ユーザーの Salt を認証する方法
Salt for Junos OSユーザー認証の概要
Salt を使用して Junos OS を実行しているデバイスを管理する場合、Junos プロキシ ミニオンは ZeroMQ イベント バスを使用して Salt マスターに接続し、ジュニパーの Junos PyEZ ライブラリを使用して Junos OS を実行しているデバイスとの SSH 経由の NETCONF セッションを確立します。管理対象デバイスは、接続方法に応じて、パスワードまたはその他の標準SSH認証メカニズムを使用してSalt ユーザーを認証できる必要があります。Salt を使用して Junos OS を実行しているデバイスを管理する場合、デバイスにアクセスする最も便利で安全な方法は、SSH キーを設定することです。これにより、リモートデバイスは信頼できるユーザーを識別できます。または、特定のデバイスのプロキシ 構成ファイルでユーザー名とパスワードの認証資格情報を指定することもできます。
Salt を使用して Junos OS を実行しているデバイスへの接続と管理を行うには、Salt マスターのピラー ファイルの proxy
キーでデバイスに必要な接続および認証情報を定義します。 proxytype: junos
を指定する場合、Junos PyEZ Device()
コンストラクターで指定できるのと同じ接続および認証パラメーターの多くをピラー データに定義できます。
次のサンプルピラーファイルは、proxytype: junos
を指定するときにproxy
キーで定義できる一般的な接続および認証パラメータを示しています。表1は、パラメータの概要を示しています。
# /srv/pillar/router1-proxy.sls proxy: proxytype: junos host: router1.example.com username: saltuser password: lab123 # SSH password or SSH key file password ssh_config: /home/saltuser/.ssh/my_config # non-default SSH configuration file ssh_private_key_file: /home/saltuser/.ssh/id_rsa_salt # non-default SSH key location port: 830
パラメーター |
形容 |
---|---|
|
Junos OSを実行しているデバイスのホスト名またはIPアドレス。 |
|
Junos OS を実行しているデバイスでの認証に使用されるユーザーまたはユーザーの SSH プライベート キー ファイルのパスフレーズ。 |
|
Junos OSを実行しているデバイスへの接続を確立するポート。 |
|
Salt が Junos プロキシ モジュールを使用して Junos OS を実行しているデバイスとインターフェイスするように指定します。 |
|
プロキシ ミニオン サーバ上の Salt ユーザの SSH 構成ファイルへのパス。SSH 構成ファイルがデフォルトパスにある場合は、このパラメーターを省略できます。 |
|
Junos プロキシが Junos OS を実行しているデバイスでの認証に使用する、プロキシ ミニオン サーバー上の Salt ユーザーの SSH 秘密キー ファイルへのパス。ユーザーのSSHキーファイルがデフォルトパスにある場合、またはパスがSSH構成ファイルですでに定義されている場合は、このパラメーターを省略できます。 |
|
Junos OSを実行し、そのJunos OSアカウント権限でSalt 操作が実行されるデバイスでの認証に使用されるユーザー名。 |
Salt は、Junos OS を実行している管理対象デバイスにアクセスできる任意のユーザー アカウントを使用して、デバイス操作を実行できます。Junos OSを実行している特定のデバイスのプロキシ構成に username
パラメーターを含めることで、ユーザーを明示的に指定できます。また、SSH構成ファイル内でユーザーを指定することもできます。ユーザーを指定しない場合は、デフォルトで現在のユーザーが設定されます。
Junos PyEZ を経由した Salt 接続は、プロキシ ミニオン サーバー上の ~/.ssh/config にあるユーザーのデフォルト SSH 構成ファイル(存在する場合)を自動的にクエリーします。ただし、そのデバイスのプロキシ構成に、別の構成ファイルを指定する ssh_config
引数が含まれていない限ります。Salt は、ユーザやアイデンティティファイルなど、そのデバイスのプロキシ構成で定義されたパラメータによって上書きされない、特定の接続の SSH 構成ファイル内の関連設定を使用します。
Junos プロキシは、まず SSH 公開キーベースの認証を試み、次にパスワードベースの認証を試みます。Junos プロキシは、SSH キー エージェントにアクティブにロードされている SSH キーを確認してから、デフォルトの場所にある SSH キーを確認します。SSH キーが使用されている場合、指定されたパスワードが秘密キーのロックを解除するためのパスフレーズとして使用されます。パスワードベースの認証を使用する場合、指定されたパスワードがデバイスパスワードとして使用されます。SSH公開鍵ベースの認証を使用しており、SSH秘密鍵のパスフレーズが空の場合、パスワードは必要ありません。ただし、空のパスフレーズでSSH秘密キーを使用することはお勧めしません。
Salt マスターでは、ピラー トップ ファイルによって、デバイスのプロキシ設定を含むピラー ファイルにプロキシ ID がマッピングされます。
saltuser@salt-master:~$ cat /srv/pillar/top.sls base: 'router1': - router1-proxy
Junos OSを実行しているデバイスでJunosプロキシミニオンプロセスを開始し、Saltマスター上のキーを承認すると、設定された認証方法を使用して接続されます。
saltuser@minion:~$ sudo salt-proxy --proxyid=router1 -d
saltuser@salt-master:~$ sudo salt-key -a router1
Salt サーバーの設定の詳細については、 Junos OS 用に Salt をインストールする方法を参照してください。
パスワードを使用したSaltユーザーの認証
パスワードを使用してSaltユーザーを認証するには、次の手順を実行します。
SSHキーを使用したSaltユーザーの認証
SSH キーを使用して Salt ユーザーを認証するには、まず Salt プロキシ ミニオン サーバーでキーを生成し、Salt が接続する Junos OS を実行している各デバイスで公開キーを構成する必要があります。キーを使用するには、Salt マスター上のデバイスのプロキシ構成に適切なパラメータを含める必要があります。Junos PyEZ を通した Salt 接続では、SSH キーエージェントにアクティブにロードされた SSH キー、デフォルトの場所またはユーザー定義の場所に生成された SSH キー、パスワード保護を使用またはパスワード保護しないキーを使用できます。Junos プロキシは、まず SSH キー エージェントにアクティブにロードされている SSH キーを確認し、次にユーザーの .ssh ディレクトリの下のデフォルトの場所にある SSH キーを確認します。
以下のセクションでは、SSH キーを生成し、Junos OS を実行しているデバイスでキーを設定し、キーを使用して管理対象デバイスに接続する手順の概要を説明します。
SSH キーの生成と設定
Salt プロキシ ミニオン サーバーで SSH キーを生成し、Junos OS を実行しているデバイスで公開キーを構成するには、次の手順に従います。
Salt プロキシ構成ファイルでの SSH キーの参照
Junos OS を実行している管理対象デバイスで SSH キー ペアを生成し、公開キーを設定すると、Junos プロキシはキーを使用してデバイスに接続できるようになります。キーを使用するには、Salt マスター上のデバイスのプロキシ構成に適切なパラメータを含める必要があります。必要な proxytype
および host
パラメータに加えて、SSHキーを使用するために必要なパラメータは、キーの場所、キーがパスワードで保護されているかどうか、キーがSSHキーエージェントにアクティブにロードされているかどうか、およびユーザーのSSH構成ファイルでそのホストの設定がすでに定義されているかどうかによって決まります。
Junos プロキシは、プロキシ ミニオン サーバー上の ~/.ssh/config にあるデフォルトの SSH 構成ファイル(存在する場合)をクエリーします。ただし、そのデバイスのプロキシ設定に、別の構成ファイルを指定する ssh_config
引数が含まれていない限ります。Salt は、特定の接続の SSH 構成ファイル内の関連する設定を使用しますが、この設定は、そのデバイスのプロキシ構成で定義されたパラメータによって上書きされません。デバイスに接続する際、Junos プロキシはまず SSH キー エージェントにアクティブにロードされている SSH キーを確認し、次にユーザーの .ssh ディレクトリの下のデフォルトの場所にある SSH キーを確認します。
ネイティブSSHキー・エージェントにアクティブにロードされるSSHキーを使用するには、以下を行います。
デバイスのプロキシ設定を含むピラーファイルで、
username
パラメータを定義する必要があります。saltuser@salt-master:~$ cat /srv/pillar/router1-proxy.sls proxy: proxytype: junos host: router1.example.com username: saltuser port: 830
デフォルトの場所にあり、パスワードで保護されていないSSHキーを使用するには:
デバイスのプロキシ設定を含むピラーファイルで
username
パラメーターを指定する必要があるのは、デバイスでの認証に使用されるキーを持つユーザーにデフォルト設定されない場合のみです。saltuser@salt-master:~$ cat /srv/pillar/router1-proxy.sls proxy: proxytype: junos host: router1.example.com username: saltuser port: 830
デフォルトの場所にない、またはパスワード保護を使用する SSH キーを使用するには、次の手順を実行します。
デバイスのプロキシ設定を含むピラーファイルで、
ssh_private_key_file
パラメータをプロキシミニオンサーバ上のSSH秘密キーのパスに設定し、キーがパスワードで保護されている場合は、password
パラメータをSSHキーファイルのパスワードに設定します。saltuser@salt-master:~$ cat /srv/pillar/router1-proxy.sls proxy: proxytype: junos host: router1.example.com username: saltuser password: ssh123 # SSH key file password ssh_private_key_file: /home/saltuser/.ssh/id_rsa_salt # SSH key in non-default location port: 830
手記:ユーザーのSSH構成ファイルで、特定のホストのSSHプライベートキーファイルパスがすでに指定されている場合は、プロキシ構成で
ssh_private_key_file
パラメーターを省略できます。ssh_private_key_file
パラメータを含めると、SSH 構成ファイル内のホストに定義されている既存のIdentityFile
値が上書きされます。