2016-04-29 26 views
3

私はローカルで実行しているos.system呼び出しに埋め込まれた別のアプリケーションのパスワードを持つPythonスクリプトを持っています。私はアクセス権を持っているDBに格納してパスワードを難読化し、DBに接続するためにWindows認証を使用します(スクリプトを自動化する必要があるため、PWのプロンプトが表示されません)。Pythonスクリプトのパスワードを保護

上記のことから、誰かが自分のスクリプトを修正し、パスワードを取得するために 'pw' varを印刷するだけの人はいませんか?他の開発者が自分のスクリプトにアクセスできる共有クラウド環境で作業しています。誰かが自分のスクリプトを修正してpwを取得できないように、それをさらに抽象化する方法はありますか?

import os 
import sqlalchemy as sa 
import urllib 
import pandas as pd 


#Specify the databases and servers used for reading and writing data. 
read_server = '~~SERVER_HERE~~' 
read_database = '~~DATABASE_HERE~~' 

#Establish DB Connection 
read_params = urllib.quote_plus("DRIVER={SQL Server};SERVER="+read_server+";DATABASE="+read_database+";TRUSTED_CONNECTION=Yes") 
read_engine = sa.create_engine("mssql+pyodbc:///?odbc_connect=%s" % read_params) 

#Read PW from DB and set to variable 
pw_query = """ SELECT DISTINCT PW FROM ~~TABLENAME_HERE~~ """ 
pw = pd.read_sql_query(pw_query,con=read_engine,index_col=None) 
pw = pw.values.tolist() 
pw = str(pw[0]) 
pw = pw.lstrip("['").rstrip("]'") 

#Establish connection to server 
os.chdir(r"C:\tabcmd\Command Line Utility") 
os.system(r'tabcmd login -s https://~~myURL~~ -u tabadmin -p {mypw}'.format(mypw = str(pw))) 
#Make sure you update the below workbook, site names, and destination directory. 
os.system(r'tabcmd get "~~FILE_Location~~" -f "~~Destination_DIR~~"') 

私は標準のPython(Cpython)とMS SQL Serverを使用しています。

答えて

1

誰かがスクリプトを変更できる場合、パスワードを保護する実際の方法はありません。

ただし、共有クラウド環境に別々のユーザーがいる場合(つまり、各ユーザーがサーバーに独自のユーザーを持つsshを使用してログインする場合)、アクセス権を変更してコードへのアクセスを制限できます。もしそうでなければ、私はこれが可能だとは思わない。

+0

良いコール、私はスクリプトへのアクセスを保護することが重要だと思います。 Windowsサーバーのアカウントを管理するサーバー管理者からも保護する方法はありますか? –

+0

@Rickサーバー管理者がデータにアクセスしないようにする必要があります。アカウントを管理していてもデータは管理していない可能性があります。しかし、最初に尋ねる価値があります。残念ながら、私はWindowsサーバでは一度も働いたことがないので、詳細はわかりません。 –

1

データベースアドレスとアクセスコードをハードコーディングしているとすれば、他の人がデータベースに接続するだけで何かを防ぐことはできません。

コードを難読化する方法がありますが、最終的にパスワードを保存するための安全な方法はなく、それを抽出するためにもっと努力する必要があります。

はまた

https://crypto.stackexchange.com/questions/19959/is-python-a-secure-programming-language-for-cryptography TLDRを参照してください。誰かがあなたのプログラムやソースコードにアクセスできる限り、ハードコードされたパスワードを抽出することができます - あなたの場合は、そのプログラムへのアクセスを制限するのが理にかなっています。

+0

hello、tobspr。私はDBに接続するためにWindowsの認証を使用していると私は自分自身にDBへのアクセスを制限。しかし、サーバ管理者は自分のDBにアクセスできるので、pwにアクセスすることができます。一緒にもっと良い方法がありますか? –

関連する問題