49/120
Ansible Vault
変数ファイルの「パスワード」セクション
暗号化処理が必要
暗号化->CPUの大量使用->必要な部分のみ暗号化->再使用テクノロジー
ファイル、部分テキストの暗号化
全集
在庫変数ファイル
include/importタスクファイル
変数値
Valut Password
接続管理ノード->キーペア検証
[vagrant@controller ~]$ ansible-vault create -h
optional arguments:
--ask-vault-pass ask for vault password
--vault-password-file VAULT_PASSWORD_FILES
#ansible-playbook 에도 볼트와 관련된 옵션들이 존재
[vagrant@controller ~]$ ansible-playbook -h
optional arguments:
--ask-vault-pass ask for vault password
--vault-id VAULT_IDS the vault identity to use
--vault-password-file VAULT_PASSWORD_FILES
AESアルゴリズムの使用(対称鍵)鍵は自分で持てばいいです.
コントロールノードには、Playbookから参照されるファイルが存在します->私のコンピュータに保存されます
実際の実行時にリリース->暗号化されたデータをメモリに格納し、メモリからリリース->再生
ネットワークは私のコンピュータ上で実行されるので、対称鍵を使用する必要はありません.
速度比較対称鍵は公開鍵よりも速い->逆に、公開鍵の性能は対称鍵よりも遅い->数学的なアルゴリズム->暗号解読鍵が異なるため、コストが高い.
使用方法
ansible-vault [SUB-COMMAND] <FILE>
create
暗号化する空のファイルを作成
[vagrant@controller vault]$ ansible-vault create a.yaml
New Vault password:
Confirm New Vault password:
[vagrant@controller vault]$ cat a.yaml
$ANSIBLE_VAULT;1.1;AES256
64656462623230313931313839353863376266353035386337393837323631383163396361316131
6631343335303666393439666464656233316465613063330a353762323230373065633934393065
暗号化済み->手動で変更しないでくださいアシュキパスワード , Unicode
view
暗号化ファイルの表示
[vagrant@controller vault]$ ansible-vault view a.yaml
Vault password:
- hosts: 192.168.100.11
tasks:
- debug:
msg: hello world
edit
暗号化ファイルの変更
[vagrant@controller vault]$ ansible-vault edit a.yaml
Vault password:
decrypt
暗号化されたファイルの復号化
[vagrant@controller vault]$ ansible-vault decrypt a.yaml
Vault password:
Decryption successful
[vagrant@controller vault]$ cat a.yaml
- hosts: 192.168.100.11
tasks:
- debug:
msg: hello world
encrypt
既存ファイルの暗号化
[vagrant@controller vault]$ ansible-vault encrypt a.yaml
New Vault password:
Confirm New Vault password:
Encryption successful
[vagrant@controller vault]$ cat a.yaml
$ANSIBLE_VAULT;1.1;AES256
39373862393762613234346535356536393436356363373238306466313436393431656538353338
6662643565346432376264353930666664313030393035340a613835663363386137666262336633
rekey
暗号化ファイルのパスワードをリセット
[vagrant@controller vault]$ ansible-vault rekey a.yaml
Vault password:
New Vault password:
Confirm New Vault password:
Rekey successful
--vault-password-file VAULT_PASSWORD_FILES
--ask-valuet-passデフォルトオプション
[vagrant@controller vault]$ echo "P@ssw0rd" > vaultpass
[vagrant@controller vault]$ cat vaultpass
P@ssw0rd
パスワードが入力されていない場合、ファイル内でパスワードを使用してセキュリティ記憶オプション$ ansible-vault [SUB-COMMAND} <FILE> --vault-password-file vaultpass
$ ansible-vault rekey --help
optional arguments:
-new-vault-password-file NEW_VAULT_PASSWORD_FILE
new vault password file for rekey
$ ansible-vault rekey a.yaml --vault-password-file valutpass --new-vault-passwod-file newvaultpass
Ansableコントローラを併用してsshを接続します.sudo権限を持つシステムは、他のユーザーにアクセスできます.
ルートファイルを渡さなければよかったのですが、渡さなければならないとき->パスワードファイルは安全ではないかもしれません
パスワードファイルのパスを翻訳可能設定ファイルに設定
$ more /etc/ansible/ansible.cfg
---
# If set, configures the path to the Vault password file as an alternative to
# specifying --vault-password-file on the command line.
#vault_password_file = /path/to/vault_password_file
---
[vagrant@controller vault]$ vi ansible.cfg
[defaults]
vault_password_file = vaultpass
-vault password-file vaultpassオプションなし安全で快適に金庫を使う方法は可能です。cfg
非表示のパスワードファイルを指定します.
[defaults]
vault_password_file = ./.vaultpass
.vaultpass
P@ssw0rd
パスワードファイルの所有者のみにアクセス権を設定chmod 600 .vaultpass
暗号化されたシナリオの実行
ダイレクト入力
ansible-playbook plaintext.yaml --ask-vault-pass
ansible-playbook plaintext.yaml --vault-password-file <File>
[vagrant@controller ~]$ ansible-playbook -h
optional arguments:
--ask-vault-pass ask for vault password
--vault-id VAULT_IDS the vault identity to use
--vault-password-file VAULT_PASSWORD_FILES
encrypt_string
特定の値の暗号化->変数の暗号化
[vagrant@controller vault]$ ansible-vault encrypt_string
New Vault password:
Confirm New Vault password:
Reading plaintext input from stdin. (ctrl-d to end input)
hello world
!vault |
$ANSIBLE_VAULT;1.1;AES256
36313965353138363262383633613563646136643263393531343538313439323162643234353862
6635313861363435343536303535313137396331373833350a396637666334613663663739343166
34326563336666303330613364653735363963303437366465616464356463383939633461313038
3633363063383633320a373561646261656162346636336134343631323436663565366437356630
6262
Encryption successful
必要な内容を入力し、[ctrl+d]2または[enter][ctrl+d]を押します.!すべてコピー
test.yaml
- hosts: 192.168.100.11
vars:
message: !vault |
$ANSIBLE_VAULT;1.1;AES256
36313965353138363262383633613563646136643263393531343538313439323162643234353862
6635313861363435343536303535313137396331373833350a396637666334613663663739343166
34326563336666303330613364653735363963303437366465616464356463383939633461313038
3633363063383633320a373561646261656162346636336134343631323436663565366437356630
6262
tasks:
- debug:
msg: "{{message}}"
暗号化された内容を変数に貼り付ける直接実行すると、復号できません.
[vagrant@controller vault]$ ansible-playbook test.yaml
TASK [debug]
fatal: [192.168.100.11]: FAILED! => {"msg": "Attempting to decrypt but no vault secrets found"}
ansible.cfgでパスワードファイルが指定されている場合は構いませんが、ファイルが指定されていない場合は、上記のエラー->クエリーパスワード実行->文字列暗号化の入力時に使用するパスワード[vagrant@controller vault]$ ansible-playbook test.yaml --ask-vault-pass
Vault password:
TASK [debug]
ok: [192.168.100.11] => {
"msg": "hello world\n"
}
単一パスワードエラー
test.yaml
- hosts: 192.168.100.11
vars:
var.yaml
tasks:
- debug:
msg: "{{message1}} {{message2}"
var.yaml
message1: !vault |
$ANSIBLE_VAULT;1.1;AES256
30373636666531636139656666663036646335646466323863383639616131353538303530353561
3830373463346233376363313837386137653136326366340a376461633232633636323232316463
35376137386361616138666235323931376138336232343338396330376639346561343436353732
6161343565363930650a333832613134386334323764323333356235643139626261333039373236
3032
message2: !vault |
$ANSIBLE_VAULT;1.1;AES256
36646134343530303937666466343065333034323065353238343032353536636230316133633030
3938653064323162373665373661356665653636343336660a323634616136613661363136623238
66366334336463663237346530383061363830343732636530356639316161666262663232313064
6262346632626463390a306435313830316161393331306135656261376132373664643236653166
3366
2つの変数はそれぞれ異なるパスワードでhelloとworldを格納します.実行時に1つのパスワードしか入力できず、1つは復号できず、結果は実行できません->もし?!マルチパスワード
マルチパスワード
--vault-idオプションの使用
--vault-id rable@source
rableをidと理解するのは簡単です
idを使用して他のpasswordを使用可能にする
関連コンテンツ
source
--vault-id user1@promptFromポートでパスワードを受信するダイアログ形式
--vault-id [email protected]
例:PaswerはMySQLを保存し、pythonコードを使用してデータベースからPasswordをインポートします.
--vault-id [email protected]
Pythonコードの指定
最も安全->コード
prompt
test.yaml
- hosts: 192.168.100.11
vars_files:
- var1.yaml
- var2.yaml
tasks:
- debug:
msg: "{{ message1 }} {{ message2 }}"
echo "message1: hello" > var1.yaml
echo "message2: world" > var2.yaml
ファイルをid付きの異なるパスワードに設定ansible-vault encrypt var1.yaml --vault-id user1@prompt
New vault password (user1):
Confirm new vault password (user1):
Encryption successful
ansible-vault encrypt var2.yaml --vault-id user2@prompt
New vault password (user2):
Confirm new vault password (user2):
Encryption successful
--vault-id user1@prompt実行時にオプションを適用し、パスワードを個別に尋ねて復号します.ansible-playbook test.yaml --vault-id user1@prompt --vault-id user2@prompt
[vagrant@controller vault]$ ansible-playbook test.yaml --vault-id user1@prompt --vault-id user2@prompt
Vault password (user1):
Vault password (user2):
TASK [debug]
ok: [192.168.100.11] => {
"msg": "hello world"
}
vault file
test.yaml
使用時と同じecho "message1: hello" > var1.yaml
echo "message2: world" > var2.yaml
echo "P@ssw0rd1" > user1pass
echo "P@ssw0rd2" > user2pass
# 보안상 권한은 설정하는 것이 좋음
chmod 600 user1pass
chmod 600 user2pass
ansible-vault encrypt var1.yaml --vault-id user1@user1pass
ansible-vault encrypt var2.yaml --vault-id user1@user2pass
# file 사용시 source는 파일명으로 지정
ansible-playbook test.yaml --vault-id user1@user1pass --vault-id user1@user2pass
Reference
この問題について(49/120), 我々は、より多くの情報をここで見つけました https://velog.io/@numerok/49120テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol