keylocker 0.4.2__tar.gz → 0.4.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- keylocker-0.4.3/PKG-INFO +156 -0
- keylocker-0.4.3/README.md +138 -0
- {keylocker-0.4.2 → keylocker-0.4.3}/pyproject.toml +2 -2
- keylocker-0.4.2/PKG-INFO +0 -154
- keylocker-0.4.2/README.md +0 -136
- {keylocker-0.4.2 → keylocker-0.4.3}/keylocker/__init__.py +0 -0
- {keylocker-0.4.2 → keylocker-0.4.3}/keylocker/__main__.py +0 -0
- {keylocker-0.4.2 → keylocker-0.4.3}/keylocker/requirements.txt +0 -0
keylocker-0.4.3/PKG-INFO
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: keylocker
|
|
3
|
+
Version: 0.4.3
|
|
4
|
+
Summary: Library with the CLI to save the encrypted secrets in the configuration file, but a transparent read and write the new settings in the app.
|
|
5
|
+
License: MIT
|
|
6
|
+
Author: vpuhoff
|
|
7
|
+
Author-email: vpuhoff@live.ru
|
|
8
|
+
Requires-Python: >=3.10
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
15
|
+
Classifier: Topic :: Utilities
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
|
|
18
|
+
# Keylocker CLI (YAML Edition)
|
|
19
|
+
|
|
20
|
+
A command-line interface (CLI) tool and Python library for managing secrets directly within YAML configuration files. Allows encrypting individual values using the `!SEC` tag and loading values from environment variables using the `!ENV` tag.
|
|
21
|
+
|
|
22
|
+
## Installation
|
|
23
|
+
|
|
24
|
+
You can install the package using pip:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
pip install keylocker
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
The package is available on PyPI: [https://pypi.org/project/keylocker/](https://pypi.org/project/keylocker/)
|
|
31
|
+
|
|
32
|
+
## Example YAML file (`config.yaml`):
|
|
33
|
+
|
|
34
|
+
```yaml
|
|
35
|
+
# config.yaml
|
|
36
|
+
database:
|
|
37
|
+
host: db.example.com
|
|
38
|
+
username: user
|
|
39
|
+
# Encrypted password using 'keylocker encrypt'
|
|
40
|
+
password: !SEC gAAAAABh...[rest of encrypted data]...
|
|
41
|
+
api:
|
|
42
|
+
endpoint: [https://api.example.com](https://api.example.com)
|
|
43
|
+
# Load key from the API_KEY environment variable
|
|
44
|
+
key: !ENV API_KEY
|
|
45
|
+
deployment:
|
|
46
|
+
region: us-east-1
|
|
47
|
+
# Another secret
|
|
48
|
+
ssh_key_pass: !SEC gAAAAABh...[another encrypted data]...
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## CLI Usage:
|
|
52
|
+
|
|
53
|
+
1. **Initialization (create key):**
|
|
54
|
+
```bash
|
|
55
|
+
keylocker init
|
|
56
|
+
# The storage.key file will be created (if it doesn't exist)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
2. **Encrypt value for YAML insertion:**
|
|
60
|
+
```bash
|
|
61
|
+
keylocker encrypt "my_secret_value"
|
|
62
|
+
# Output:
|
|
63
|
+
# Add the following line to your YAML file:
|
|
64
|
+
# !SEC gAAAAABh...[encrypted data]...
|
|
65
|
+
|
|
66
|
+
# Copy the !SEC ... line into your YAML file
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
3. **View decrypted YAML:**
|
|
70
|
+
```bash
|
|
71
|
+
# Set the environment variable (if using !ENV)
|
|
72
|
+
export API_KEY="your_actual_api_key"
|
|
73
|
+
|
|
74
|
+
keylocker view config.yaml
|
|
75
|
+
# Outputs the YAML with !SEC values decrypted
|
|
76
|
+
# and !ENV values substituted
|
|
77
|
+
# Example output:
|
|
78
|
+
# database:
|
|
79
|
+
# host: db.example.com
|
|
80
|
+
# username: user
|
|
81
|
+
# password: my_secret_value # Decrypted!
|
|
82
|
+
# api:
|
|
83
|
+
# endpoint: [https://api.example.com](https://api.example.com)
|
|
84
|
+
# key: your_actual_api_key # Substituted from env!
|
|
85
|
+
# deployment:
|
|
86
|
+
# region: us-east-1
|
|
87
|
+
# ssh_key_pass: decrypted_pass # Decrypted!
|
|
88
|
+
```
|
|
89
|
+
*(Note: An `edit` command might be added in the future for interactive editing)*
|
|
90
|
+
|
|
91
|
+
## Usage in Python Code:
|
|
92
|
+
|
|
93
|
+
```python
|
|
94
|
+
import os
|
|
95
|
+
from keylocker import load_yaml_secrets
|
|
96
|
+
|
|
97
|
+
# Set environment variables if needed
|
|
98
|
+
os.environ['API_KEY'] = 'your_actual_api_key_for_python'
|
|
99
|
+
|
|
100
|
+
config_file = 'config.yaml'
|
|
101
|
+
key_file = 'storage.key' # Make sure the key exists
|
|
102
|
+
|
|
103
|
+
try:
|
|
104
|
+
# Load and automatically decrypt/substitute
|
|
105
|
+
secrets = load_yaml_secrets(config_file, key_file)
|
|
106
|
+
|
|
107
|
+
if secrets:
|
|
108
|
+
db_password = secrets.get('database', {}).get('password')
|
|
109
|
+
api_key = secrets.get('api', {}).get('key')
|
|
110
|
+
|
|
111
|
+
print(f"Database Password: {db_password}")
|
|
112
|
+
print(f"API Key: {api_key}")
|
|
113
|
+
|
|
114
|
+
except Exception as e:
|
|
115
|
+
print(f"An error occurred: {e}")
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Usage in Bash:
|
|
119
|
+
|
|
120
|
+
To extract specific values from the decrypted YAML, you can use utilities like `yq` or standard Unix tools.
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
#!/bin/bash
|
|
124
|
+
|
|
125
|
+
# Make sure the environment variable is set if needed
|
|
126
|
+
export API_KEY="your_bash_api_key"
|
|
127
|
+
|
|
128
|
+
# Get the decrypted YAML
|
|
129
|
+
CONFIG_YAML=$(keylocker view config.yaml)
|
|
130
|
+
|
|
131
|
+
# Check if the command executed successfully
|
|
132
|
+
if [ $? -ne 0 ]; then
|
|
133
|
+
echo "Error executing keylocker view"
|
|
134
|
+
exit 1
|
|
135
|
+
fi
|
|
136
|
+
|
|
137
|
+
# Example extraction using yq (requires yq installation)
|
|
138
|
+
# DB_PASS=$(echo "$CONFIG_YAML" | yq e '.database.password' -)
|
|
139
|
+
# API_KEY_FROM_YAML=$(echo "$CONFIG_YAML" | yq e '.api.key' -)
|
|
140
|
+
|
|
141
|
+
# Example extraction using grep/awk (less robust)
|
|
142
|
+
DB_PASS=$(echo "$CONFIG_YAML" | grep -A 1 'database:' | grep 'password:' | awk '{print $2}')
|
|
143
|
+
API_KEY_FROM_YAML=$(echo "$CONFIG_YAML" | grep -A 1 'api:' | grep 'key:' | awk '{print $2}')
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
echo "Extracted DB Password: $DB_PASS"
|
|
147
|
+
echo "Extracted API Key: $API_KEY_FROM_YAML"
|
|
148
|
+
|
|
149
|
+
# Further use of variables...
|
|
150
|
+
# e.g., publish command using extracted credentials
|
|
151
|
+
# some_command --username user --password "${DB_PASS}"
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Source Code:
|
|
155
|
+
* [https://github.com/vpuhoff/keylocker](https://github.com/vpuhoff/keylocker)
|
|
156
|
+
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Keylocker CLI (YAML Edition)
|
|
2
|
+
|
|
3
|
+
A command-line interface (CLI) tool and Python library for managing secrets directly within YAML configuration files. Allows encrypting individual values using the `!SEC` tag and loading values from environment variables using the `!ENV` tag.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
You can install the package using pip:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pip install keylocker
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The package is available on PyPI: [https://pypi.org/project/keylocker/](https://pypi.org/project/keylocker/)
|
|
14
|
+
|
|
15
|
+
## Example YAML file (`config.yaml`):
|
|
16
|
+
|
|
17
|
+
```yaml
|
|
18
|
+
# config.yaml
|
|
19
|
+
database:
|
|
20
|
+
host: db.example.com
|
|
21
|
+
username: user
|
|
22
|
+
# Encrypted password using 'keylocker encrypt'
|
|
23
|
+
password: !SEC gAAAAABh...[rest of encrypted data]...
|
|
24
|
+
api:
|
|
25
|
+
endpoint: [https://api.example.com](https://api.example.com)
|
|
26
|
+
# Load key from the API_KEY environment variable
|
|
27
|
+
key: !ENV API_KEY
|
|
28
|
+
deployment:
|
|
29
|
+
region: us-east-1
|
|
30
|
+
# Another secret
|
|
31
|
+
ssh_key_pass: !SEC gAAAAABh...[another encrypted data]...
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## CLI Usage:
|
|
35
|
+
|
|
36
|
+
1. **Initialization (create key):**
|
|
37
|
+
```bash
|
|
38
|
+
keylocker init
|
|
39
|
+
# The storage.key file will be created (if it doesn't exist)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
2. **Encrypt value for YAML insertion:**
|
|
43
|
+
```bash
|
|
44
|
+
keylocker encrypt "my_secret_value"
|
|
45
|
+
# Output:
|
|
46
|
+
# Add the following line to your YAML file:
|
|
47
|
+
# !SEC gAAAAABh...[encrypted data]...
|
|
48
|
+
|
|
49
|
+
# Copy the !SEC ... line into your YAML file
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
3. **View decrypted YAML:**
|
|
53
|
+
```bash
|
|
54
|
+
# Set the environment variable (if using !ENV)
|
|
55
|
+
export API_KEY="your_actual_api_key"
|
|
56
|
+
|
|
57
|
+
keylocker view config.yaml
|
|
58
|
+
# Outputs the YAML with !SEC values decrypted
|
|
59
|
+
# and !ENV values substituted
|
|
60
|
+
# Example output:
|
|
61
|
+
# database:
|
|
62
|
+
# host: db.example.com
|
|
63
|
+
# username: user
|
|
64
|
+
# password: my_secret_value # Decrypted!
|
|
65
|
+
# api:
|
|
66
|
+
# endpoint: [https://api.example.com](https://api.example.com)
|
|
67
|
+
# key: your_actual_api_key # Substituted from env!
|
|
68
|
+
# deployment:
|
|
69
|
+
# region: us-east-1
|
|
70
|
+
# ssh_key_pass: decrypted_pass # Decrypted!
|
|
71
|
+
```
|
|
72
|
+
*(Note: An `edit` command might be added in the future for interactive editing)*
|
|
73
|
+
|
|
74
|
+
## Usage in Python Code:
|
|
75
|
+
|
|
76
|
+
```python
|
|
77
|
+
import os
|
|
78
|
+
from keylocker import load_yaml_secrets
|
|
79
|
+
|
|
80
|
+
# Set environment variables if needed
|
|
81
|
+
os.environ['API_KEY'] = 'your_actual_api_key_for_python'
|
|
82
|
+
|
|
83
|
+
config_file = 'config.yaml'
|
|
84
|
+
key_file = 'storage.key' # Make sure the key exists
|
|
85
|
+
|
|
86
|
+
try:
|
|
87
|
+
# Load and automatically decrypt/substitute
|
|
88
|
+
secrets = load_yaml_secrets(config_file, key_file)
|
|
89
|
+
|
|
90
|
+
if secrets:
|
|
91
|
+
db_password = secrets.get('database', {}).get('password')
|
|
92
|
+
api_key = secrets.get('api', {}).get('key')
|
|
93
|
+
|
|
94
|
+
print(f"Database Password: {db_password}")
|
|
95
|
+
print(f"API Key: {api_key}")
|
|
96
|
+
|
|
97
|
+
except Exception as e:
|
|
98
|
+
print(f"An error occurred: {e}")
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Usage in Bash:
|
|
102
|
+
|
|
103
|
+
To extract specific values from the decrypted YAML, you can use utilities like `yq` or standard Unix tools.
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
#!/bin/bash
|
|
107
|
+
|
|
108
|
+
# Make sure the environment variable is set if needed
|
|
109
|
+
export API_KEY="your_bash_api_key"
|
|
110
|
+
|
|
111
|
+
# Get the decrypted YAML
|
|
112
|
+
CONFIG_YAML=$(keylocker view config.yaml)
|
|
113
|
+
|
|
114
|
+
# Check if the command executed successfully
|
|
115
|
+
if [ $? -ne 0 ]; then
|
|
116
|
+
echo "Error executing keylocker view"
|
|
117
|
+
exit 1
|
|
118
|
+
fi
|
|
119
|
+
|
|
120
|
+
# Example extraction using yq (requires yq installation)
|
|
121
|
+
# DB_PASS=$(echo "$CONFIG_YAML" | yq e '.database.password' -)
|
|
122
|
+
# API_KEY_FROM_YAML=$(echo "$CONFIG_YAML" | yq e '.api.key' -)
|
|
123
|
+
|
|
124
|
+
# Example extraction using grep/awk (less robust)
|
|
125
|
+
DB_PASS=$(echo "$CONFIG_YAML" | grep -A 1 'database:' | grep 'password:' | awk '{print $2}')
|
|
126
|
+
API_KEY_FROM_YAML=$(echo "$CONFIG_YAML" | grep -A 1 'api:' | grep 'key:' | awk '{print $2}')
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
echo "Extracted DB Password: $DB_PASS"
|
|
130
|
+
echo "Extracted API Key: $API_KEY_FROM_YAML"
|
|
131
|
+
|
|
132
|
+
# Further use of variables...
|
|
133
|
+
# e.g., publish command using extracted credentials
|
|
134
|
+
# some_command --username user --password "${DB_PASS}"
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Source Code:
|
|
138
|
+
* [https://github.com/vpuhoff/keylocker](https://github.com/vpuhoff/keylocker)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "keylocker"
|
|
3
|
-
version = "0.4.
|
|
4
|
-
description = "
|
|
3
|
+
version = "0.4.3" # Убедитесь, что версия актуальна
|
|
4
|
+
description = "Library with the CLI to save the encrypted secrets in the configuration file, but a transparent read and write the new settings in the app."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { text = "MIT" }
|
|
7
7
|
authors = [
|
keylocker-0.4.2/PKG-INFO
DELETED
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.3
|
|
2
|
-
Name: keylocker
|
|
3
|
-
Version: 0.4.2
|
|
4
|
-
Summary: Инструмент CLI и библиотека для управления секретами в YAML файлах с шифрованием.
|
|
5
|
-
License: MIT
|
|
6
|
-
Author: vpuhoff
|
|
7
|
-
Author-email: vpuhoff@live.ru
|
|
8
|
-
Requires-Python: >=3.10
|
|
9
|
-
Classifier: Programming Language :: Python :: 3
|
|
10
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
-
Classifier: Operating System :: OS Independent
|
|
12
|
-
Classifier: Development Status :: 4 - Beta
|
|
13
|
-
Classifier: Intended Audience :: Developers
|
|
14
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
15
|
-
Classifier: Topic :: Utilities
|
|
16
|
-
Description-Content-Type: text/markdown
|
|
17
|
-
|
|
18
|
-
# Keylocker CLI (YAML Edition)
|
|
19
|
-
|
|
20
|
-
Инструмент командной строки (CLI) и библиотека Python для управления секретами непосредственно в YAML файлах конфигурации. Позволяет шифровать отдельные значения с помощью тега `!SEC` и загружать значения из переменных окружения с помощью тега `!ENV`.
|
|
21
|
-
|
|
22
|
-
## Пример YAML файла (`config.yaml`):
|
|
23
|
-
|
|
24
|
-
```yaml
|
|
25
|
-
# config.yaml
|
|
26
|
-
database:
|
|
27
|
-
host: db.example.com
|
|
28
|
-
username: user
|
|
29
|
-
# Зашифрованный пароль с помощью keylocker encrypt
|
|
30
|
-
password: !SEC gAAAAABh...[rest of encrypted data]...
|
|
31
|
-
api:
|
|
32
|
-
endpoint: [https://api.example.com](https://api.example.com)
|
|
33
|
-
# Загрузка ключа из переменной окружения API_KEY
|
|
34
|
-
key: !ENV API_KEY
|
|
35
|
-
deployment:
|
|
36
|
-
region: us-east-1
|
|
37
|
-
# Еще один секрет
|
|
38
|
-
ssh_key_pass: !SEC gAAAAABh...[another encrypted data]...
|
|
39
|
-
````
|
|
40
|
-
|
|
41
|
-
## Использование в CLI:
|
|
42
|
-
|
|
43
|
-
1. **Инициализация (создание ключа):**
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
keylocker init
|
|
47
|
-
# Будет создан файл storage.key (если не существует)
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
2. **Шифрование значения для вставки в YAML:**
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
keylocker encrypt "my_secret_value"
|
|
54
|
-
# Вывод:
|
|
55
|
-
# Add the following line to your YAML file:
|
|
56
|
-
# !SEC gAAAAABh...[encrypted data]...
|
|
57
|
-
|
|
58
|
-
# Скопируйте строку !SEC ... в ваш YAML файл
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
3. **Просмотр расшифрованного YAML:**
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
# Установите переменную окружения (если используется !ENV)
|
|
65
|
-
export API_KEY="your_actual_api_key"
|
|
66
|
-
|
|
67
|
-
keylocker view config.yaml
|
|
68
|
-
# Выведет YAML с расшифрованными значениями !SEC
|
|
69
|
-
# и подставленными значениями !ENV
|
|
70
|
-
# Пример вывода:
|
|
71
|
-
# database:
|
|
72
|
-
# host: db.example.com
|
|
73
|
-
# username: user
|
|
74
|
-
# password: my_secret_value # Расшифровано!
|
|
75
|
-
# api:
|
|
76
|
-
# endpoint: [https://api.example.com](https://api.example.com)
|
|
77
|
-
# key: your_actual_api_key # Подставлено из env!
|
|
78
|
-
# deployment:
|
|
79
|
-
# region: us-east-1
|
|
80
|
-
# ssh_key_pass: decrypted_pass # Расшифровано!
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
*(Примечание: Команда `edit` может быть добавлена в будущем для интерактивного редактирования)*
|
|
84
|
-
|
|
85
|
-
## Использование в коде Python:
|
|
86
|
-
|
|
87
|
-
```python
|
|
88
|
-
import os
|
|
89
|
-
from keylocker import load_yaml_secrets
|
|
90
|
-
|
|
91
|
-
# Установите переменные окружения, если нужно
|
|
92
|
-
os.environ['API_KEY'] = 'your_actual_api_key_for_python'
|
|
93
|
-
|
|
94
|
-
config_file = 'config.yaml'
|
|
95
|
-
key_file = 'storage.key' # Убедитесь, что ключ существует
|
|
96
|
-
|
|
97
|
-
try:
|
|
98
|
-
# Загрузка и автоматическая расшифровка/подстановка
|
|
99
|
-
secrets = load_yaml_secrets(config_file, key_file)
|
|
100
|
-
|
|
101
|
-
if secrets:
|
|
102
|
-
db_password = secrets.get('database', {}).get('password')
|
|
103
|
-
api_key = secrets.get('api', {}).get('key')
|
|
104
|
-
|
|
105
|
-
print(f"Database Password: {db_password}")
|
|
106
|
-
print(f"API Key: {api_key}")
|
|
107
|
-
|
|
108
|
-
except Exception as e:
|
|
109
|
-
print(f"An error occurred: {e}")
|
|
110
|
-
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
## Использование в Bash:
|
|
114
|
-
|
|
115
|
-
Для извлечения конкретных значений из расшифрованного YAML можно использовать утилиты вроде `yq` или стандартные инструменты Unix.
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
#!/bin/bash
|
|
119
|
-
|
|
120
|
-
# Убедитесь, что переменная окружения установлена, если она нужна
|
|
121
|
-
export API_KEY="your_bash_api_key"
|
|
122
|
-
|
|
123
|
-
# Получаем расшифрованный YAML
|
|
124
|
-
CONFIG_YAML=$(keylocker view config.yaml)
|
|
125
|
-
|
|
126
|
-
# Проверка, что команда выполнилась успешно
|
|
127
|
-
if [ $? -ne 0 ]; then
|
|
128
|
-
echo "Ошибка при выполнении keylocker view"
|
|
129
|
-
exit 1
|
|
130
|
-
fi
|
|
131
|
-
|
|
132
|
-
# Пример извлечения с помощью yq (требует установки yq)
|
|
133
|
-
# DB_PASS=$(echo "$CONFIG_YAML" | yq e '.database.password' -)
|
|
134
|
-
# API_KEY_FROM_YAML=$(echo "$CONFIG_YAML" | yq e '.api.key' -)
|
|
135
|
-
|
|
136
|
-
# Пример извлечения с помощью grep/sed (менее надежно)
|
|
137
|
-
DB_PASS=$(echo "$CONFIG_YAML" | grep -A 1 'database:' | grep 'password:' | awk '{print $2}')
|
|
138
|
-
API_KEY_FROM_YAML=$(echo "$CONFIG_YAML" | grep -A 1 'api:' | grep 'key:' | awk '{print $2}')
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
echo "Извлеченный пароль БД: $DB_PASS"
|
|
142
|
-
echo "Извлеченный API ключ: $API_KEY_FROM_YAML"
|
|
143
|
-
|
|
144
|
-
# Дальнейшее использование переменных...
|
|
145
|
-
# poetry publish --username user --password "${DB_PASS}" --build
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
## Source Code:
|
|
150
|
-
* [https://github.com/vpuhoff/keylocker](https://github.com/vpuhoff/keylocker)
|
|
151
|
-
|
|
152
|
-
## Travis CI Deploys:
|
|
153
|
-
* [https://travis-ci.com/vpuhoff/keylocker](https://travis-ci.com/vpuhoff/keylocker) [](https://travis-ci.com/vpuhoff/keylocker)
|
|
154
|
-
|
keylocker-0.4.2/README.md
DELETED
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
# Keylocker CLI (YAML Edition)
|
|
2
|
-
|
|
3
|
-
Инструмент командной строки (CLI) и библиотека Python для управления секретами непосредственно в YAML файлах конфигурации. Позволяет шифровать отдельные значения с помощью тега `!SEC` и загружать значения из переменных окружения с помощью тега `!ENV`.
|
|
4
|
-
|
|
5
|
-
## Пример YAML файла (`config.yaml`):
|
|
6
|
-
|
|
7
|
-
```yaml
|
|
8
|
-
# config.yaml
|
|
9
|
-
database:
|
|
10
|
-
host: db.example.com
|
|
11
|
-
username: user
|
|
12
|
-
# Зашифрованный пароль с помощью keylocker encrypt
|
|
13
|
-
password: !SEC gAAAAABh...[rest of encrypted data]...
|
|
14
|
-
api:
|
|
15
|
-
endpoint: [https://api.example.com](https://api.example.com)
|
|
16
|
-
# Загрузка ключа из переменной окружения API_KEY
|
|
17
|
-
key: !ENV API_KEY
|
|
18
|
-
deployment:
|
|
19
|
-
region: us-east-1
|
|
20
|
-
# Еще один секрет
|
|
21
|
-
ssh_key_pass: !SEC gAAAAABh...[another encrypted data]...
|
|
22
|
-
````
|
|
23
|
-
|
|
24
|
-
## Использование в CLI:
|
|
25
|
-
|
|
26
|
-
1. **Инициализация (создание ключа):**
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
keylocker init
|
|
30
|
-
# Будет создан файл storage.key (если не существует)
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
2. **Шифрование значения для вставки в YAML:**
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
keylocker encrypt "my_secret_value"
|
|
37
|
-
# Вывод:
|
|
38
|
-
# Add the following line to your YAML file:
|
|
39
|
-
# !SEC gAAAAABh...[encrypted data]...
|
|
40
|
-
|
|
41
|
-
# Скопируйте строку !SEC ... в ваш YAML файл
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
3. **Просмотр расшифрованного YAML:**
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
# Установите переменную окружения (если используется !ENV)
|
|
48
|
-
export API_KEY="your_actual_api_key"
|
|
49
|
-
|
|
50
|
-
keylocker view config.yaml
|
|
51
|
-
# Выведет YAML с расшифрованными значениями !SEC
|
|
52
|
-
# и подставленными значениями !ENV
|
|
53
|
-
# Пример вывода:
|
|
54
|
-
# database:
|
|
55
|
-
# host: db.example.com
|
|
56
|
-
# username: user
|
|
57
|
-
# password: my_secret_value # Расшифровано!
|
|
58
|
-
# api:
|
|
59
|
-
# endpoint: [https://api.example.com](https://api.example.com)
|
|
60
|
-
# key: your_actual_api_key # Подставлено из env!
|
|
61
|
-
# deployment:
|
|
62
|
-
# region: us-east-1
|
|
63
|
-
# ssh_key_pass: decrypted_pass # Расшифровано!
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
*(Примечание: Команда `edit` может быть добавлена в будущем для интерактивного редактирования)*
|
|
67
|
-
|
|
68
|
-
## Использование в коде Python:
|
|
69
|
-
|
|
70
|
-
```python
|
|
71
|
-
import os
|
|
72
|
-
from keylocker import load_yaml_secrets
|
|
73
|
-
|
|
74
|
-
# Установите переменные окружения, если нужно
|
|
75
|
-
os.environ['API_KEY'] = 'your_actual_api_key_for_python'
|
|
76
|
-
|
|
77
|
-
config_file = 'config.yaml'
|
|
78
|
-
key_file = 'storage.key' # Убедитесь, что ключ существует
|
|
79
|
-
|
|
80
|
-
try:
|
|
81
|
-
# Загрузка и автоматическая расшифровка/подстановка
|
|
82
|
-
secrets = load_yaml_secrets(config_file, key_file)
|
|
83
|
-
|
|
84
|
-
if secrets:
|
|
85
|
-
db_password = secrets.get('database', {}).get('password')
|
|
86
|
-
api_key = secrets.get('api', {}).get('key')
|
|
87
|
-
|
|
88
|
-
print(f"Database Password: {db_password}")
|
|
89
|
-
print(f"API Key: {api_key}")
|
|
90
|
-
|
|
91
|
-
except Exception as e:
|
|
92
|
-
print(f"An error occurred: {e}")
|
|
93
|
-
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
## Использование в Bash:
|
|
97
|
-
|
|
98
|
-
Для извлечения конкретных значений из расшифрованного YAML можно использовать утилиты вроде `yq` или стандартные инструменты Unix.
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
#!/bin/bash
|
|
102
|
-
|
|
103
|
-
# Убедитесь, что переменная окружения установлена, если она нужна
|
|
104
|
-
export API_KEY="your_bash_api_key"
|
|
105
|
-
|
|
106
|
-
# Получаем расшифрованный YAML
|
|
107
|
-
CONFIG_YAML=$(keylocker view config.yaml)
|
|
108
|
-
|
|
109
|
-
# Проверка, что команда выполнилась успешно
|
|
110
|
-
if [ $? -ne 0 ]; then
|
|
111
|
-
echo "Ошибка при выполнении keylocker view"
|
|
112
|
-
exit 1
|
|
113
|
-
fi
|
|
114
|
-
|
|
115
|
-
# Пример извлечения с помощью yq (требует установки yq)
|
|
116
|
-
# DB_PASS=$(echo "$CONFIG_YAML" | yq e '.database.password' -)
|
|
117
|
-
# API_KEY_FROM_YAML=$(echo "$CONFIG_YAML" | yq e '.api.key' -)
|
|
118
|
-
|
|
119
|
-
# Пример извлечения с помощью grep/sed (менее надежно)
|
|
120
|
-
DB_PASS=$(echo "$CONFIG_YAML" | grep -A 1 'database:' | grep 'password:' | awk '{print $2}')
|
|
121
|
-
API_KEY_FROM_YAML=$(echo "$CONFIG_YAML" | grep -A 1 'api:' | grep 'key:' | awk '{print $2}')
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
echo "Извлеченный пароль БД: $DB_PASS"
|
|
125
|
-
echo "Извлеченный API ключ: $API_KEY_FROM_YAML"
|
|
126
|
-
|
|
127
|
-
# Дальнейшее использование переменных...
|
|
128
|
-
# poetry publish --username user --password "${DB_PASS}" --build
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
## Source Code:
|
|
133
|
-
* [https://github.com/vpuhoff/keylocker](https://github.com/vpuhoff/keylocker)
|
|
134
|
-
|
|
135
|
-
## Travis CI Deploys:
|
|
136
|
-
* [https://travis-ci.com/vpuhoff/keylocker](https://travis-ci.com/vpuhoff/keylocker) [](https://travis-ci.com/vpuhoff/keylocker)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|