VBAプロジェクトはではありません。は十分に保護されています.2時間無料でインターネットが通じる可能性があります。
基本的なシナリオは、異なる権限を持つDBレベルで異なるユーザーを作成することです。次に、Excelスプレッドシート上のユーザーに、セルの1つまたはユーザーフォームにパスワードとユーザー名を入力するように依頼します。パスワードとユーザー名を取り出し、接続文字列で使用します。
セキュリティのさらなる一歩として、私はsalting
と呼ぶ少し小さなトリックを使うかもしれません。例えば。指定されたユーザーのパスワードがvityata
であるとします。その後、ユーザーに入力するように依頼します。入力すると、パスワードを取って別のものに変更します。これはデータベースのパスワードでなければなりません。つまり、次のような意味です:
Public Function str_generator(ByVal str_value As String, ByVal b_fix As Boolean) As String
Dim l_counter As Long
Dim l_number As Long
Dim str_char As String
On Error GoTo str_generator_Error
If b_fix Then
str_value = Left(str_value, Len(str_value) - 1)
str_value = Right(str_value, Len(str_value) - 1)
End If
For l_counter = 1 To Len(str_value)
str_char = Mid(str_value, l_counter, 1)
If b_is_odd(l_counter) Then
l_number = Asc(str_char) + IIf(b_fix, -2, 2)
Else
l_number = Asc(str_char) + IIf(b_fix, -3, 3)
End If
str_generator = str_generator + Chr(l_number)
Next l_counter
If Not b_fix Then
str_generator = Chr(l_number) & str_generator & Chr(l_number)
End If
On Error GoTo 0
Exit Function
str_generator_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure str_generator of Function Modul1"
End Function
Private Function b_is_odd(l_number As Long) As Boolean
b_is_odd = l_number Mod 2
End Function
ユーザーパスワードはvityata
としましょう。その後、ユーザーが入力すると、データベースの実際のパスワードであるcxlv|cwcc
に変更されます。
?str_generator("vityata",false)
cxlv|cwcc
?str_generator("cxlv|cwcc",true)
vityata
少なくとも最後にではなく、 - https://github.com/Vitosh/VBA_personal/blob/6750f76e85540829056e7889c489a65daf85c696/cls_Connection.vb - これが私のクラスの接続がどのように見えるかです。あなたが改善のためのアイデアを持っているなら、私はプルリクエストを見てうれしいです。
DBAと話し合って、ユーザーがとにかく見ることができるデータへのアクセスのみを提供するログインについて考えましたか? DB内のビューとそのビューのデータにしかアクセスできないアカウントがあります。 –
SQL Serverのマシン/ユーザーIDに基づいてセキュリティを制限できますか? –
@RobinMackenzie私が使っているアカウントは既に読み取り専用ですが、ログインの詳細を誰にも見せたくありません。 –