Azure Devopsの「リリースパイプライン」では、SQLServerデータベースを含むAzureリソースをプロビジョニングし、管理対象IDを使用してデータベースへのアクセスを設定してください。
DevOpS Service Principalを確実にした後は、データベースサーバのAAD管理者として定義されているAADグループのメンバーであるため、管理対象のIDユーザーを追加して役割を変更するには、SQLを実行する必要があります。これは、Invoke-Sqlcmd
コマンドレットを使用して、Azure PowerShellタスクで試行されます。
Invoke-Sqlcmd
2つの香りがあり、私が使用しなければならず、それが重要なのであれば明らかではありません。これまでのところ、私が試してみたのはAADで認証できませんでした。
AAD認証を使用する意図をInvoke-Sqlcmd
に伝えますか?
私は最初のConnect-AzureAD
に必要ですか?
System.Management.Automation.PSCredential
オブジェクトを渡す必要がある場合は、サービスプリンシパル(Azure DevOpSサービスユーザー)を扱っていることを考えると、ユーザーとパスワードとして使用する必要があります。
油が理解されています。
この例のようなものを試してみてください、あなたのニーズを調整するだけです...
$Creds = Get-Credential -Credential '[email protected]'
$Username = $($Creds.GetNetworkCredential().UserName)
$Password = $($Creds.GetNetworkCredential().Password)
$Database = "testg"
$Server = 'test.database.windows.net'
$Port = 1433
$cxnString = "Server=tcp:$Server,$Port;Database=$Database;Authentication=Active Directory Password;UID=$UserName;PWD=$Password;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"
$query = "select count(*) from dbo.Authors"
$cxn = New-Object System.Data.SqlClient.SqlConnection($cxnString)
$cxn.Open()
$cmd = New-Object System.Data.SqlClient.SqlCommand($query, $cxn)
$cmd.CommandTimeout = 120
$cmd.ExecuteNonQuery()
$cxn.Close()
_
opの更新
それは単なる選択肢でした。ポップアップを必要としない場合は、安全なファイルを作成して、Windowsクレデンシャルストア内のCRESをそのクレジットまたは保存するか、そこからそれらを引いてください。それでも、あなたはまだそれらを最初に作成する必要があります。
私はInvoke-SQLCmd
でこれを行う方法を見つけることができませんでしたが、主にここで説明されている非常に簡単な方法を持っています(例8): https://docs.dbatools.io /#connect-dbainstance
私は今の間これを使用していて、私が知っている限りでは、MFAはまだサポートされていません。