Excel VBA | 実務用 VBA コード集(テンプレ付き)

Excel VBA VBA
スポンサーリンク

VBA拡張版:パスワードを一時的にデータベースやクラウドに保存し、管理者が必要時に取得できる仕組み

ここまでで「パスワードを自動生成してメールやSMSで通知」する方法を紹介しました。今回はさらに拡張して、パスワードを一時的にデータベースやクラウドに保存し、管理者が必要時に取得できる仕組みを作る方法です。これにより、パスワードを安全に保管し、必要なときだけ管理者がアクセスできるようになります。


実現方法の選択肢

  1. データベース保存
    • SQL Server / MySQL / SQLite などに「パスワード管理テーブル」を作成
    • 有効期限付きで保存(例:24時間後に削除)
    • 管理者は専用ツールやクエリで取得
  2. クラウド保存
    • Azure Key Vault / AWS Secrets Manager / Google Secret Manager を利用
    • API経由でパスワードを登録・取得
    • 管理者はクラウドポータルや専用アプリからアクセス
  3. 簡易クラウドストレージ
    • OneDrive / Google Drive に暗号化したテキストファイルを一時保存
    • 管理者は共有リンクから取得

VBAサンプル(SQL Serverに保存)

Option Explicit

'=== パスワードをDBに保存 ===
Sub SavePasswordToDB(password As String)
    Dim conn As Object, cmd As Object
    
    ' ADO接続
    Set conn = CreateObject("ADODB.Connection")
    conn.Open "Provider=SQLOLEDB;Data Source=SERVERNAME;Initial Catalog=PasswordDB;User ID=dbuser;Password=dbpass;"
    
    Set cmd = CreateObject("ADODB.Command")
    cmd.ActiveConnection = conn
    cmd.CommandText = "INSERT INTO PasswordTable (PasswordValue, CreatedAt, ExpireAt) VALUES (?, GETDATE(), DATEADD(hour, 24, GETDATE()))"
    cmd.Parameters.Append cmd.CreateParameter(, 8, 1, 255, password) ' 8=adVarChar, 1=adParamInput
    
    cmd.Execute
    conn.Close
End Sub
VB

👉 管理者は SELECT PasswordValue FROM PasswordTable WHERE ExpireAt > GETDATE() で取得可能。


VBAサンプル(Azure Key Vaultに保存)

Sub SavePasswordToAzure(password As String)
    Dim http As Object
    Set http = CreateObject("MSXML2.XMLHTTP")
    
    Dim vaultURL As String, token As String
    vaultURL = "https://yourvault.vault.azure.net/secrets/zipPassword?api-version=7.2"
    token = "Bearer " & "your_access_token" ' 事前にOAuthで取得
    
    Dim payload As String
    payload = "{""value"":""" & password & """,""attributes"":{""exp"":""" & Format(Now + 1, "yyyy-mm-ddThh:nn:ssZ") & """}}"
    
    http.Open "PUT", vaultURL, False
    http.setRequestHeader "Content-Type", "application/json"
    http.setRequestHeader "Authorization", token
    http.Send payload
    
    MsgBox "パスワードをAzure Key Vaultに保存しました", vbInformation
End Sub
VB

👉 管理者は Azure Portal や API から取得可能。


この拡張版のポイント

  • 一時保存 → 有効期限付きで管理
  • 安全な取得 → 管理者のみアクセス可能
  • クラウドやDBを利用 → セキュリティ強化

実務でのメリット

  • セキュリティ強化 → パスワードをメールやSMSで直接送らず、安全に保管
  • 監査対応 → 誰がいつ取得したかログを残せる
  • 柔軟性 → 管理者が必要なタイミングで取得可能

✅ まとめ

  • パスワードを自動生成 → ZIPに設定
  • 一時的にDBやクラウドに保存 → 有効期限付き
  • 管理者が必要時に取得 → セキュリティ強化された運用が完成
タイトルとURLをコピーしました