- Microsoft OAuthサインインを優先する。PATを使用するか、 SSH コンテキストに応じて Git Credential Manager に依存します。
- 秘密を安全に管理する: SecureString/Keyfile PowerShellの GitHub Actions のシークレット。
- Fabric API を使用して自動化し、LRO 操作を監視しながら接続、更新、変更のコミットを行います。
- GCM、リモート、キャッシュ、ネットワーク構成を修正して、Azure DevOps の認証の問題を解決します。
PowerShellからGitを安全に使用する これは単なる利便性の問題ではなく、コードとパイプラインを保護するための要件です。Azure DevOps、GitHub、Microsoft Fabric との統合を伴うシナリオでは、適切な認証が、堅牢なワークフローと脆弱なワークフローの違いを生みます。
この実用的かつ包括的なガイドでは 推奨される認証方法(Microsoft OAuth、PAT、SSH)、Git資格情報マネージャーの使用について確認します。 ストレージ PowerShell のシークレット、GitHub Actions のシークレット、Fabric API による自動化、そして Azure DevOps のログインに関する一般的な問題のトラブルシューティング。すべてリスクの最小化と生産性の向上に重点を置いています。
Git の認証方法: OAuth、PAT、SSH キー
今日好まれるアプローチ Azure Repos/Azure DevOps では、エンタープライズ統合とスコープ制御に優れた OAuth 2.0 ベースの Microsoft Entra トークンをご利用ください。また、より実用的または必要な場合には、PAT を代替手段として、SSH キーを使用することもできます。
- Microsoft ログイン OAuth トークン (推奨): これらはオンデマンドで取得でき、Git APIとREST APIの両方で使用できます。Azure CLIからサインインしてアクセストークンを取得し、Git操作に追加できます。例えば、ユーザー認証を使用する場合は、以下のコマンドでトークンを取得できます。
az account get-access-tokenそして、次のような追加ヘッダーを使用してGitに適用します。http.extraheader勇気をもってAUTHORIZATION: bearer(「bearer」と発行されたトークンを使用)。 - 個人アクセストークン(PAT): SSH がない場合や OAuth を使用できない場合に便利です。 許可や有効期限によって制限される可能性がある露出度を低減します。HTTPSでこれらを使用する場合、Gitはユーザー名(架空でも可)を要求し、そのパスワードがPATとなることに注意してください。PATをヘッダーまたは文字列で送信する必要がある場合、ワークフローで必要な場合は、クライアント側でBase64エンコードを使用するのが一般的です。
- SSHキー: これらは、マシン上で生成されたパブリック/プライベート ペアで動作します。 公開鍵はアカウントに関連付けられています (Azure DevOpsやGitHubなど)サーバーが通信を暗号化し、ユーザーは共有されないローカルのプライベートな暗号化で復号化します。SSHは、すでにSSHエージェントを使用している場合、HTTPS経由でPATを管理したくない場合、またはLinux/macOS/Windows環境(Gitなど)で特に便利です。 Windows) はキーに最適です。
Git 認証情報マネージャー: 入力を繰り返すことなく認証
経済
アンスプラッシュ
Git 資格情報マネージャー (GCM) トークンをオンデマンドで保存・発行するため、トランザクションごとに再認証を行う必要はありません。GCM をインストールすれば、一度ログインするだけで、マネージャーがトークン(Preferred Attendance OAuth または PAT)を安全に保存し、Git やその他のクライアントで使用できるようになります。
GCMの優れた実践: 方法を変更したり、競合を検出した場合は、古い認証情報マネージャの設定をアンインストールして再設定してください。その後、 資格情報を取り消したり、ローテーションしたりする 最小権限の原則を尊重する必要がなくなったとき。
既存のリポジトリの操作: ソース、PAT、クローン
以前のリモコンを取り外す 古い方法(ユーザー名/パスワードなど)で設定されている場合、リモートを削除するには git remote remove origin 再度追加する前に、資格情報の衝突を回避します。
認証付きリモートを再度追加する HTTPS経由のPATを使用すると、プロンプトの問題を解決できます。リモートは、PATをユーザーに埋め込んだURLで表現するか、GCMを使用してトークンがテキストで公開されるのを防ぐことができます。リモートを追加した後、 枝を押す とともに git push -u origin --all.
Azure DevOps によるクローン作成: Azure DevOpsのリポジトリパスには次のセグメントが含まれます /_git/典型的なクローンURLは次のようになります https://dev.azure.com/{organization}/{project}/_git/{repository}、それを考慮に入れて リポジトリの実際の名前が置き換えられます 対応するマーカーに。
GitHub での SSH: キーの確認、生成、関連付け
GitHubは認証と署名を許可します SSH経由でコミットとタグを送信します。新しいキーを追加する前に、既に登録されているキーがないか確認してください。登録されていない場合は、新しいキーを生成してシステムのSSHエージェントに追加してください。
公開鍵を関連付ける GitHub.comアカウントへのSSHアクセスを有効にします。認証と署名に同じキーを使用する場合は、 2回充電する必要があります目的ごとに1つずつ作成します。その後、リモートでHTTPSではなくSSHを使用するように再設定できます。
Microsoft Fabric による自動化: Git API 統合
- FabricはGitとの統合のためのREST APIを提供する CI/CD および一般的な操作: ワークスペースの接続、接続の初期化、Git からの更新、一括または選択的な変更のコミット、長時間実行操作の監視。
- ワークスペースの接続と更新: 認証後(例えば
Connect-AzAccount)でトークンを入手Get-AzAccessTokenは、ワークスペース、リポジトリ、ブランチを関連付けるための接続APIを呼び出します。そして、 接続を初期化する 専用 API を使用します。応答によっては、「UpdateFromGit」が必要になる場合があります。 - Gitからの更新 リモートコミットとワークスペースの状態を含む本体を構築し、呼び出しを実行し、 州を調査する 長時間実行操作の。サーバーは操作識別子と再試行間隔を返します。操作が完了するまで、定期的に確認できます。
- APIによるその他の操作: ワークスペースのすべての変更をコミットし、ステータスを確認した後、特定の項目のみを選択的にコミットし、 プローブLRO操作 を得る 操作ID 前回の呼び出しから進捗状況を確認します。
- Gitプロバイダーの資格情報接続: 多くの通話には 接続ID. 新しい接続を作成して、 GitHub PATを保存する 資格情報として(オプションで特定のリポジトリに限定)または既存の接続をリストして再利用する idこれらのエンドポイントは次のようなプロパティを返します。 displayName, path, 資格情報タイプ およびその他のメタデータ。
- 考慮すべき制限事項: API統合はUI制限を継承し、サービスプリンシパル認証はGitHubでのみサポートされ、 特定の意味モデル アップデートの改善後には、差分が表示される場合があります。
PowerShell で資格情報を安全に保存する
PowerShellを使用すると、パスワードとシークレットを暗号化できます 後でスクリプトで使用できるようにディスクに保存します。 Read-Host -AsSecureString 安全な認証情報を取得するには ConvertFrom-SecureString 暗号化してシリアル化する 同じユーザーとコンピュータに対してのみ有効なファイルに変更します。
- 同じユーザーで使用する: 保存された暗号化された文字列
ConvertFrom-SecureStringできるのは ユーザーによって復号化された それを生成した。それを読み返すには スクリプト、 適用するGet-ContentyConvertTo-SecureStringメモリ内の安全なオブジェクトを再構築します。 - ポータブルキーファイル: 他のユーザーやマシンが秘密を復号できるようにする必要がある場合は、対称鍵を生成します(たとえば、
RNGCryptoServiceProvider)と併用するConvertFrom-SecureString -Keyキーをファイルに保存して、後で SecureStringを再構築する とともにConvertTo-SecureString -Key同じキーファイルを使用します。 - PSCredentialを作成する 秘密の読み取りから直接:ユーザーと
SecureStringenNew-Object System.Management.Automation.PSCredentialこの方法では、スクリプト内でクリアテキストを公開することなく、ユーザー名とパスワードをパラメーター化します。 - 記憶衛生: それでも
SecureString文字列を分離しますが、相互運用性のためにテキストに変換する場合があります。その場合は、ポインタメモリを解放してください。ZeroFreeCoTaskMemUnicode使用後SecureStringToBSTRyPtrToStringUni, メモリの無駄を避ける.
バイトの世界とテクノロジー全般についての情熱的なライター。私は執筆を通じて自分の知識を共有するのが大好きです。このブログでは、ガジェット、ソフトウェア、ハードウェア、技術トレンドなどについて最も興味深いことをすべて紹介します。私の目標は、シンプルで楽しい方法でデジタル世界をナビゲートできるよう支援することです。