私はjujuでいくつかの展開を管理しています。しかし、私は島ではありません。共有環境を管理したい同僚もいます。
~/.juju/environments.yaml
の次のスタンザを使用して、私のjuju環境にアクセスできるようにすることができます。
authorized-keys: [and then put their ssh IDs in here]
複数のシステム管理者がいる複数の環境を管理するために利用できる他のベストプラクティスは何ですか?
現時点では、Jujuは複数の管理者向けに最適化されていません。特に、現在Jujuで見られる セキュリティの問題 のいくつかは、複数の管理者と連携する場合により顕著になります。ただし、いくつかの注意事項がありますが、これは信頼できる管理者グループ(したがって、おそらく小規模な管理者グループ)にとって有用なオプションのままです。
それを念頭に置いて、~/.juju/environment.yaml
ファイル内の関連する構成アイテムを見てみましょう。
authorized-keys
アイテムは、bootstrapノード(ZooKeeperが実行されるマシン0)およびその後にプロビジョニングされるすべてのノードで、ubuntuユーザーの公開SSHキーを定義するために、環境bootstrapで使用されます。許可された公開キーを1行に1つずつリストするだけです。次のようになります。
authorized-keys: |
ssh-rsa AAAblahblahZZZZ user@domain
ecdsa-sha2-nistp256 AAAAfoobarZZZZ= user2@domain
このアプローチは、authorized-keys-path
-またはそのデフォルト(~/.ssh/
)-を使用するよりも望ましい方法です。これは、SSHキーを共有しなければならない場合(1人の管理者にのみ適しています)。簡単に言えば、これはauthorized-keys-path
の実装方法の制限にすぎません。
次に、クラウドプロバイダーは特定のセキュリティ資格情報を定義し、Jujuはそれを使用します。例として、EC2、特にAWSを見てみましょう。 AWSでは、アクセスを決定するために、環境変数access-key
およびsecret-key
に対応するAWS_ACCESS_KEY_ID
およびAWS_SECRET_ACCESS_KEY
の2つのキーが使用されます(これらは、構成ファイルで指定されていない場合のデフォルトです)。ここでの複数管理環境、または単一管理環境での課題は、この情報がZooKeeperにコピーされ、ZKノード/environment
ですぐに表示されることです。 Juju bug#907094 を参照してください。
AWSの例では、AWS Identity and Access Management FAQ(これを検索)を使用して、アクセスキーをある程度制御できますが、現在、よりきめの細かい機能を提供するメカニズムはありませんJuju環境で特定の管理者を制御します。
私たち自身の使用、特にテストで見られる追加のパターンは注目に値します。他のJuju環境を制御するために特定のノードに設定されたJuju環境(「コントロール」)。 juju charm を展開して、これをセットアップします。使用するenvironment.yaml
を設定オプションとして受け取ります。その後、追加の管理者は、~ubuntu/.ssh/authorized-keys
にキーを手動で追加することにより、ubuntu
ユーザーとして後で承認できます。
これにより、頭痛を最小限に抑えながら、単一のポイントでこれらの懸念事項の一部を管理できます。前述のセキュリティ上の懸念のいくつかに対処することはありません-あなたはまだ他の管理者の合理的な深い信頼を持っている必要があります。
Jujuは、特定のコマンド(environments.yaml
、/environment
、juju add-unit
、juju constraints-get
、juju constraints-set
)を使用すると、juju deploy
をZKノードjuju terminate-machine
に再同期します。実際には、これはひどく有用ではありません-制約をサポートするという実際の使用目的を除きます。ただし、同期で取得された後、新しくプロビジョニングされたマシンのように、認証キーファイルを更新する必要性を最小限に抑えることができます。その後、以前にプロビジョニングされたマシンを更新するだけです。
この点に関しては、~ubuntu/.ssh/authorized-keys
の実際の使用方法と場所に注目する価値があります。
2つの例外を除き、すべてのJuju制御コマンドは、ZooKeepeerインスタンスへのSSHトンネルを使用して、Juju環境からの情報を管理または検索します。 (juju bootstrap
およびjuju destroy-environment
は、基盤となるクラウドプロバイダーAPIと直接連携します。)したがって、マシン0でauthorized-keys
を常に最新の状態に保つ必要があります。
juju ssh
とjuju scp
は、マシンを直接操作できるようにします。また、複数管理の場合に更新を検討する必要がある最新のauthorized-keys
が必要です。これらのコマンドは、デフォルトでターゲットマシンのubuntu
ユーザーを使用します。