kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Azure PipelineのパイプラインでLibraryを勝手に使われたくない場合にするセキュリティ設定

ascii.jp

業務で使う場合は、GitHubのPersonal Access Tokenをどう扱うかは気を付ける必要があります。Libraryに保存しちゃうと意図しないPipelineで使われてしまうリスクがあるので、どうすると良いですかね?

という疑問が末尾に書かれていたので、どうするのがいいか考えてみましょう。まず、大前提として、GitHubのPATをLibraryに格納する場合、GitHubのPATにアクセスできる人だけをAdministratorにしておきます。

f:id:kkamegawa:20201014194824p:plain

PAT単位にセキュリティを設定する場合はPATを作ったユーザーのみadministratorにします。デフォルトはLibraryからの継承なので、都合が悪い場合は継承を切ってください。ただし、Build Serviceアカウントを削除してしまうとビルドエージェントがLibraryを参照できなくなるので気を付けてください。

f:id:kkamegawa:20201014194305p:plain

Libraryのセキュリティでも設定できます。通常はLibraryを管理するユーザーを決めておきましょう。Build AdministratorかProject Administratorのみ管理者なので大体大丈夫のはずです。

f:id:kkamegawa:20201014194319p:plain

記事内で心配されていた「知らないpipelineに使われる」というのはservice connectionの権限で防ぎます。https://dev.azure.com/{organization}/{project}/_settings/adminservices画面でGitHubのへの接続を作っています。

f:id:kkamegawa:20201014203232p:plain

Approvers and ChecksはEnvironmentと同じ設定ができます。典型的にはBusiness Hourだけ使えるようにするとかそういった制御ができます。

docs.microsoft.com

下のSecurityをクリックすると、画面の真ん中にPipeline permissionがあるので、そこでGitHubへの接続を使えるパイプラインを明示的に指定します。

f:id:kkamegawa:20201014203559p:plain

これで仮にLibraryの値を意図しないパイプラインで参照されたとしても、GitHubへのアクセスができなくなります。

いちいちプロジェクトごとにそんな設定するのめんどいなぁ、という場合、その下にあるProject Permissionからこのservice connectionが使用可能なプロジェクトを指定します。

f:id:kkamegawa:20201014203747p:plain

ここで指定されたプロジェクトはこのGitHubへの接続が使用可能になります。大きなプロジェクトではチームプロジェクト単位でservice connectionを作るのではなく、特定のプロジェクトに集中させて、ほかではこういった外部接続を使わないようにすれば集中管理が可能になります。

Devblog ラジオはじめました

松村さんと「もうちょっとゆるいイベントやりたいねぇ」ということで、MicrosoftのVisual Studioブログをネタにして夜のラジオみたいな感じで適当にしゃべる番組しようか?ということでノリではじめてみました。

第一回はAzure DevOps拡張機能についてです。あまり使っている人の話聞かないので、こんなのあるよーという紹介編ですね。よかったら動画もみてください。

今のところ第二第四金曜日(この前は土曜でしたけど)の22時から一時間くらいでやろうかな、と思っています。YouTube Liveで放送するつもりがどうしてもライブ申請が通らなくて困っています…なんでだ。おかげで急遽Teamsにしたけど、設定間違えてコメント付けられない状態になってるわ、えらいご迷惑をおかけいたしました。次回までにはYouTubeライブの申請が通るといいなぁ。

(追記)
今見たらライブの申請通ってました。次回は練習してほんとにYouTubeライブでやります。

devblog.connpass.com

単発でしゃべってみたい人、こんな記事ネタでしゃべってほしいなどがありましたらこの動画の登場人物の誰かにコンタクトをお願いしますというか、こちらからお願いするかもしれません。特にX-Plat関係や最新のクライアントに強い人いないので😅。

www.youtube.com

よかったら高評価もお願いします。

Azure DevOps Server2020リリース&インストール

Azure DevOps Server 2020がリリースされましたね。

docs.microsoft.com

以前のオンプレミスではリリースノート翻訳されていたのに、されなくなってしまった…予算か?

今回からWindows Server 2012 R2以前のOSが非対応になっているので、ハードウェアの移行しないといけない人も多いと思います。Reporting Serverも非推奨になりつつあるので、以前よりは移行が簡単です(私はもう使っていません)。

tfsadmin.exeでバックアップをとってもいいですがSQL Serverから以下のデータベースをバックアップします。

  • [AzureDevOps | Tfs]_コレクション名
  • [AzureDevOps | Tfs]_Configuration
  • Tfs_Warehouse(これはなくてもいいかも)

新しいOSにSQL Serverをインストールします。せっかくなので、SQL Server 2019を使いましょう。

コレクション名のデータベースは複数ある可能性があるので、忘れずにもれなくバックアップ&リストアしましょう。

そのあと、Azure DevOpsのインストールを行い運用環境のアップグレードを選択して実行すればいいです。

アップグレードプロセスそのものは2019とほぼ変わりありません。TFS 2018との違いはAzulのJDKをダウンロードしてくることくらいですかね。ちなみにSQL Server 2019インストール時にBig Data Clusterを有効にすると別のJDKがインストールされるので、二つはいることになります :-)。

Azure DevOps 2020/10/1の更新

Azure DevOps Sprint176のリリースノートの翻訳を行いました。オリジナルはこちらからご覧ください。

docs.microsoft.com

今回いよいよ、organizationレベルでGitのデフォルトブランチ名を変更できるようになりました。GitHubも10/1から新規作成したレポジトリーはmainになってますね。MS管理の既存レポジトリーもわりとmainに変わっているようです。upstreamからfetchしようとして、「もう変わったんだ」とちょっとびっくりしました。

docsのデフォルトブランチのように、もともとmasterではなく、liveと言うブランチ名使っていたところもありますね。

PRのコメントのみの読み書き可能なPATのスコープは面白いですね。確かにBotに対してはコメントだけ読み書きできれば十分なこともあるので、便利に使えるケースもあるだろうと思います。token where compromisedと言う単語の訳語、deepl, Googleとも危殆化と言う訳語を提案してくれていましたが、日本語としてどうもイメージできなかったので、単純に「漏洩」みたいにしています。

日本語の会見でも「漏洩したとしても、直接使えるものではないから直ちに危険ではない」みたいなイメージでしょうか。

@matarillo さんから教えてもらいました。HUNTER x HUNTERのG.I編みてたおかげで「妥協」と言う訳があることは知っていましたけど、「トークンが妥協?」とちょっと首を傾げてました。

GitHubのレポジトリーに対するdraft PRのvalidationもGitHubのレポジトリ中心で生活している場合はとても便利そうです。

ではまた三週間後。

Translate to Japanese to Azure DevOps release not…