Flask-Vault는 AES-GCM 과 대칭 암호화를 사용하여 명확하게 유지하고 싶지 않은 비밀을 저장하기 위해 몇 가지 CLI 명령 및 Python 기능을 제공합니다. 이러한 명령 및 기능을 통해 API 키, 데이터베이스 자격 증명 등과 같은 매우 중요한 자격 증명을 안전하게 읽고 쓸 수 있습니다.
또한 Flask-Vault 에는 여러 도우미가 포함되어있어 데이터의 암호화 및 암호 해독을 단순화합니다.
웹 개발의 세계에서 민감한 정보를 보호하는 것이 가장 중요한 관심사입니다. 플라스크를 사용할 때 자격 증명을 관리 할 때 Flask-Vault 및 Dotenv의 두 가지 눈에 띄는 옵션이 나타납니다. 둘 다 장점이 있지만 Flask-Vault는 중요한 데이터를 보호하기위한 우수한 선택으로 두드러집니다.
Flask-Vault는 민감한 정보를 보호하기위한 강력한 솔루션을 제공합니다. 암호화 된 Credentials.toml.enc 파일에 저장된이 데이터는 추가 된 보안 계층에 의해 보호됩니다. 마스터 키로 만 해독 할 수있어 파일이 잘못된 손에해도 정보가 액세스 할 수 없도록합니다.
또한 flask vault edit 통해 액세스 한 암호화 된 편집기를 통해 자격 증명 파일을 안전하게 직접 편집 할 수 있습니다. 이 기능은 보안을 손상시키지 않고 민감한 정보를 신속하게 조정하는 데 매우 중요합니다.
Flask-Vault 와 Dotenv는 모두 중요한 기능을 수행하지만 Flask-Vault는 민감한 데이터를 보호하기위한 우수한 선택입니다. 플라스크 내에서 강력한 암호화와 원활한 통합은 중요한 정보를 관리하기위한 이상적인 솔루션입니다. Flask-Vault는 접근성을 희생하지 않고 보안을 우선시함으로써 개발자가 데이터 보호 측정에 대한 최대한의 신뢰로 응용 프로그램을 구축하고 유지할 수 있도록합니다.
flask_vault 에서 사용하는 암호화는 128 비트 키가 있는 AES-GCM 입니다.
다음은 128 비트 키와 함께 AES-GCM을 사용하면 다음과 같습니다.
보안 : AES-GCM은 안전한 것으로 간주되며 인터넷 커뮤니케이션 보안을위한 TLS (Transport Layer Security)를 포함한 다양한 응용 프로그램에서 널리 사용됩니다.
효율성 : AES-GCM은 계산 리소스 측면에서 비교적 효율적인 것으로 알려져 있습니다. 이것은 IoT (Internet of Things) 장치와 같이 계산 능력이 제한 될 수있는 시나리오에서 특히 중요합니다.
빠른 암호화 및 암호 해독 : AES-GCM은 최신 프로세서에 최적화되어있어 데이터가 비교적 빠르게 데이터를 암호화하고 해독 할 수 있음을 의미합니다. 이는 성능에 민감한 응용 프로그램에 중요합니다.
병렬화 : AES-GCM 암호화 및 암호 해독이 병렬화 될 수 있습니다. 즉, 현대 CPU의 다중 처리 코어를 활용할 수 있습니다.
AEAD (Adainticated Actryption) AED (Abouted Data) : AED (Asurediven) : AES-GCM은 기밀성과 무결성을 모두 제공합니다. 즉, 데이터가 암호화 될뿐만 아니라 데이터가 변조되지 않았는지 확인하기위한 메시지 인증 코드 (MAC)도 포함되어 있음을 의미합니다.
Nonce 기반 : AES-GCM은 각 암호화 작업에 대해 NONCE라고하는 고유 한 초기화 벡터 (IV)가 필요합니다. 즉, 동일한 키로 동일한 데이터를 여러 번 암호화하더라도 암호 텍스트가 다르므로 추가 보안 계층이 추가됩니다.
널리 지원되는 : AES-GCM은 많은 암호화 라이브러리와 프레임 워크에서 지원되므로 광범위한 응용 프로그램을위한 실질적인 선택입니다.
준수 : AES-GCM은 종종 다양한 보안 표준 및 준수 프레임 워크에서 권장되거나 요구됩니다.
Flask-Vault는 데이터 및 파일을 보호하기 위해 거의 종속성을 사용합니다.이 라이브러리의 두 가지 주요 종속성은 다음과 같습니다.
python = " >=3.7 "
cryptography = " ^41.0.3 "PIP를 사용하여 설치 및 업데이트
$ > pip install Flask-Vault시를 사용하여 설치하고 업데이트하십시오
$ > poetry add Flask-Vaultflask_vault.cli.vault_cli 사용하여 Flask-Vault 활성화하십시오. from flask import Flask
from flask_vault . cli import vault_cli
app = Flask ( __name__ )
...
# Register Command using the
app . cli . add_command ( vault_cli )
... Flask-Vault 에서 사용하는 기본 편집기는 VI 입니다.
아래의 예는 VI 이외의 편집기를 사용하여 credentials.toml.enc 에 저장된 자격 증명을 표시하거나 편집하는 방법을 보여줍니다. 그림과 같이,이 예제는 nano 편집기를 사용하여 flask vault show 명령을 사용합니다.
$ > EDITOR=nano flask vault showFlask Vault Init :
flask vault init명령은 Flask-Vault가 작동하는 데 필요한 환경을 초기화합니다. 이 명령tmpcredentials.toml.enc파일,master.key이 명령을 두 번째로 실행하면 생성 된 파일을 덮어 쓸 수 없으므로 조치를 취하지 않습니다.
Flask Vault get [Secret_name] :
flask vault get명령은credentials.toml.enc해독하고 터미널에서 선택한 비밀을 표시합니다.
Flask Vault Show :
flask vault show명령credentials.toml.encmaster.key
Flask Vault Edit
credentials.toml.encflask vault show명령은master.key
Flask Vault 암호화 [Filename] :
flask vault encrypt명령은 암호화 된 파일을 만듭니다. 생성 된 파일은 AES-GCM 암호화로 보호되며.enc확장자를 사용하여 일반 텍스트 파일과 구별됩니다.
Flask Vault Decrypt [Filename] :
flask vault decrypt명령은 Extension.enc와 파일을 해독하고 터미널에 내용을 표시합니다.
flask_vault.utils.aes_gcm_encrypt 사용한 데이터 암호화 flask_vault.utils.aes_gcm_encrypt 사용하여 응용 프로그램 내에서 암호화 키를 노출하지 않고 데이터 암호화
from flask import Flask
from flask_vault . utils import aes_gcm_encrypt
app = Flask ( __name__ )
@ app . route ( "/encrypted" , methods = [ "GET" ])
def encrypted ():
ctx = {
"encrypted" : aes_gcm_encrypt ( "my.app.secret" )
}
return render_template ( "encrypted.html" , ** ctx )flask_vault.utils.aes_gcm_decrypt 사용한 데이터를 해독합니다 flask_vault.utils.aes_gcm_decrypt 사용하여 응용 프로그램 내에서 암호화 키를 노출시키지 않고 데이터를 해독합니다.
from flask import Flask
from flask_vault . utils import aes_gcm_decrypt
app = Flask ( __name__ )
@ æpp . route ( "/decrypt" , methods = [ "GET" ])
def decrypt ():
encrypted_data = request . args . get ( "encrypted" , None )
ctx = {
"plaintext" : aes_gcm_decrypt ( encrypted_data ) if encrypted_data is not None else "Missing encrypted data!"
}
return render_template ( "decrypt.html" , ** ctx )credentials.toml.enc 파일 내부에 저장된 자격 증명을 얻습니다 아래의 예는 flask-vault의 get_secret 함수를 사용하여 credentials.toml.enc 파일에서 비밀을 얻는 방법을 보여줍니다. 이 예에서는 get_secret master.key 데이터베이스를 구성하는 데 사용되어 Mas
# ... other stuff
[ db ]
name = " my-db-name "
username = " root "
password = " my-db-password "credentials.toml.enc 에서 비밀을 얻는 방법 flask_vault.utils.get_secret 함수를 사용하여 credentials.toml.enc 파일 내에 저장된 비밀 및 자격 증명을 얻으십시오.
flask_vault.utils.get_secret 을 사용하는 app.py import sys
import mariadb
from flask import Flask , request , g
from flask_vault . utils import get_secret
app = Flask ( __name__ )
def get_db ():
db = getattr ( g , "_database" , None )
if db is None :
try :
conn = mariadb . connect (
user = get_secret ( "db" ). get ( "username" ),
password = get_secret ( "db" ). get ( "password" ),
host = "127.0.0.1" ,
port = 3306 ,
database = get_secret ( "db" ). get ( "name" ),
)
db = g . _database = conn
except mariadb . Error as e :
print ( f"Error connecting to MariaDB Platform: { e } " )
sys . exit ( 1 )
return db
@ app . teardown_appcontext
def close_connection ( exception ):
db = getattr ( g , "_database" , None )
if db is not None :
db . close ()질문, 의견 또는 개선 사항은 Github에 문제를 만듭니다.
코드 또는 문서 변경을 제안하려면 GitHub에 새 풀 요청을 작성하십시오. 또한 마스터 브랜치에 리바스를함으로써 풀 요청에서 여러 커밋을 한 번의 커밋으로 스쿼시하십시오.
저의 작업이 유용하다고 생각 하고이 프로젝트 및 향후 프로젝트를 지원하는 데 관심이 있다면 다음 크립토 화폐 중 하나를 사용하여 기부금을 남겨주세요.
bc1qy8h7d9xt8442axcyzdq8q3vglvcqzexdmjhawpMIT 라이센스
저작권 (c) 2023---- adriano romanazzo <github.com/multiversecoder>
이에 따라이 소프트웨어 및 관련 문서 파일 ( "소프트웨어")의 사본을 얻는 사람에게는 허가가 부여됩니다. 소프트웨어의 사용, 복사, 수정, 합병, 배포, 배포, 숭고 및/또는 소프트웨어의 사본을 판매 할 권한을 포함하여 제한없이 소프트웨어를 처리 할 수 있도록 소프트웨어를 제공 할 권한이 없습니다.
위의 저작권 통지 및이 권한 통지는 소프트웨어의 모든 사본 또는 실질적인 부분에 포함되어야합니다.
이 소프트웨어는 상업성, 특정 목적에 대한 적합성 및 비 침해에 대한 보증을 포함하여 명시 적 또는 묵시적 보증없이 "그대로"제공됩니다. 어떠한 경우에도 저자 또는 저작권 보유자는 계약, 불법 행위 또는 기타, 소프트웨어 또는 소프트웨어의 사용 또는 기타 거래에서 발생하는 계약, 불법 행위 또는 기타의 행동에 관계없이 청구, 손해 또는 기타 책임에 대해 책임을지지 않습니다.