Skip to content

Instantly share code, notes, and snippets.

@kkamegawa
Created October 26, 2024 13:17
Show Gist options
  • Save kkamegawa/f410d42dae28c44ea74d376c1a4175e4 to your computer and use it in GitHub Desktop.
Save kkamegawa/f410d42dae28c44ea74d376c1a4175e4 to your computer and use it in GitHub Desktop.

拡張されたセキュリティとワークフローの効率化 - sprint 246

In this article

このスプリントでは、セキュリティの強化とワークフロー効率の向上に焦点を当てたさまざまな改善が行われています。これらの改善の中には、Azure Pipelinesのサービス接続作成エクスペリエンスがあります。今回の更新で、チームは既存のマネージドIDを使用してサービス接続を設定できるようになり、ワークロードIDフェデレーションを利用できます。また、設定が簡素化され、過剰な権限を持つIDのリスクが軽減されます。

さらに、Azure Reposでは、mermaid構文を含むMarkdownファイルがファイルプレビューやpull requestで図としてレンダリングされるようになり、ドキュメントの視覚的な明確さが向上することがお知らせできて嬉しく思います。

最後に、GitHub Advanced Securityでは、pull requestの注釈が依存関係とコードスキャンのインライン通知を提供するようになり、コードレビュー中に潜在的な問題を検出して対処するプロセスが簡素化されます。

詳細はリリースノートをご覧ください。

developer communityからのフィードバックいただき、レンダリングされたMarkdownのすべてのコードブロックに"Copy to clipboard"ボタンを導入しました。この機能強化は、Wikiページ、リポジトリ内のMarkdownファイルプレビュー、pull requestのディスカッションと説明、および作業項目のディスカッション全体で利用可能です。

Screenshot of copy to clipboard.

Azure DevOpsでMicrosoft Entraのプロフィールが統合されるようになりました。これにより、別々のプロフィール更新が不要になります。プレビューを試すには、Preview FeatureでMicrosoft Entraプロフィール情報を有効にしてください。

Screenshot of turn on Microsoft Entra Profile Information.

有効にすると、profile settingsは読み取り専用になり、Microsoft Entraから自動的に入力されます。以前の設定に戻すかフィードバックを提供するには、プレビューをオフにしてコメントを共有してください。

Advanced Securityのロードマップの一環として、pull requestの注釈が利用可能になりました。依存関係および/またはコードスキャンタスクを含むビルド検証ポリシーに関連付けられたパイプラインを使用するpull requestにインライン注釈が表示されます。

関連するブランチに対してビルド検証ポリシーを作成する以外に追加のオプトインは必要ありません。

注釈のShow more detailsをクリックすると、該当するアラートの詳細ビューに移動します。

Screenshot of Clicking on Show more details.

より詳細な情報は、我々の最新のブログをご覧ください。

依存関係スキャンは、Python用の新しい検出戦略であるPipReportを使用するようになりました。これは、pip installation report機能に基づいています。この更新により、環境指定子を尊重して、実際のpip installが取得する正確なバージョンを特定することで、精度が向上します。デフォルトでは、検出器はpypi.orgを使用して依存関係グラフを構築します。オプションで、パイプライン環境変数PIP_INDEX_URLを設定して依存関係グラフを構築することもできます。フィードにアクセスする際に認証の問題がある場合は、フィードにアクセスできるようにPipAuthenticate@1パイプラインタスクを設定する必要があるかもしれません。

検出戦略の詳細については、Pip Detectionをドキュメントをご覧ください。

作業項目フォームのタグ管理が強化され、よりスムーズなエクスペリエンスが提供されます。削除されたタグは作業項目フォームの候補リストに表示されなくなり、アクティブなタグのみが表示されるようになります。

作業項目のコメントに画像を貼り付けるサポートが向上しました。Microsoft Teams、電子メール、Wordドキュメントなどのソースから直接画像を作業項目のディスカッションセクションに貼り付けができるようになりました。

GitHub pull requestとAzure Boardsの統合が強化されました。オープンおよびクローズドのステータスを表示するだけでなく、pull requestがドラフトモードであるか、レビューが必要であるか、チェックのステータスを確認できるようになりました。pull requestを開く必要はありません。

Gif to demo enhanced GitHub pull request insights.

この機能を有効にするには、GitHubのBoardsアプリに移動して、チェックへの読み取りおよび書き込みアクセスの更新された権限を受け入れてください。

SScreenshot of updated permissions.

リポジトリ内の複数のブランチを管理することは、新しいpull requestを作成する際に特に困難です。新しい「pull requestのターゲットブランチを設定」機能を使用すると、優先ターゲットブランチのリストを指定できるようになり、pull requestの提案がより正確で関連性の高いものになります。これにより、ワークフローが合理化され、誤ったブランチをターゲットにする可能性が減少します。この機能を使用するには、リポジトリのデフォルトブランチに .azuredevops/pull_request_targets.ymlファイルを作成します。この YAML ファイルには、候補ブランチに一致するブランチ名またはプレフィックスを含む pull_request_targets というタイトルのリストが含まれている必要があります。例えば

pull_request_targets:
  - main
  - release/*
  - feature/*

この構成では、mainブランチが優先されますが、release/またはfeature/で始まるブランチも適切な場合に考慮されます。この構成は、次のシナリオで適用されます。

  • pull requestの提案 : ブランチをAzure DevOpsにプッシュした後、リポジトリページがそのブランチからpull requestを作成することを提案し、ターゲットブランチを動的に選択する場合があります。
  • pull requestURL: sourceRefパラメータを使用してpull request作成ページに直接移動するが、targetRefパラメータを省略する場合、Azure DevOpsはこの動的な選択に基づいてターゲットブランチを選択します。

pull requestポリシーで保護されたブランチのみを含めることをお勧めします。これにより、先端コミットのfast-parent履歴の一貫性が確保されます。

Markdownファイルに含まれるmermaid構文は、リポジトリのファイルブラウザやpull request内のファイルプレビューで図としてレンダリングされるようになります。これにより、リポジトリにより豊かなドキュメントを追加することができます。

Screenshot of mermaid diagrams in markdown file preview.

Ubuntu 24.04イメージがAzure Pipelinesホストエージェントで一般提供可能になりました。このイメージを使うにはYAMLにvmImage:'ubuntu-24.04'と指定してください。

- job: ubuntu2404
  pool:
    vmImage: 'ubuntu-24.04'
  steps:
  - bash: |
      echo Hello from Ubuntu 24.04
      lsb_release -d

注意事項

今年の暮れにubuntu-22.04がubuntu-latestラベルのイメージになる予定です。

Ubuntu 24.04 image readmeにインストールされているソフトウェアの一覧を公開しています。

6月に、.NET、C++、Go、Java、JavaScript、およびPython用のAzure IdentityライブラリにワークロードIDフェデレーションのサポートが追加されました。これにより、AzureCLI@2およびAzurePowerShell@5タスクから実行されるコードが、AzurePipelinesCredentialクラスを使用してMicrosoft Entra(例:Azureへのアクセス)で認証できるようになりました。

多くの顧客が、他のタスクから呼び出される統合テストでAzure Identityライブラリを使用しています。DotNetCoreCLI@2Maven@4、およびVSTest@3タスクにAzurePipelinesCredentialのサポートを追加しました。

connectedServiceプロパティを、ワークロードIDフェデレーションで構成されたAzureサービス接続に設定できます。AzurePipelinesCredentialには、SYSTEM_ACCESSTOKENを設定する必要があります。

- task: DotNetCoreCLI@2
  inputs:
    command: 'run'
    connectedService: <Azure service connection configured with workload identity federation>
  env:
    SYSTEM_ACCESSTOKEN: $(System.AccessToken)

AzurePipelinesCredentialのより詳細な解説はこのblog postをご覧ください。

新しいAzureサービス接続作成エクスペリエンスは、柔軟性と安全なデフォルトを提供します。また、Microsoft Entra IDとの用語の整合性が取れているため、Microsoft Entra IDオブジェクトを手動で作成するユーザーが異なるポータルをナビゲートする際に理解しやすくなります。

新しいAzure Resource Managerサービス接続を作成する際、以前使用されていた個別のトップレベル項目に代わり、アイデンティティを構成するためのさまざまなオプションが単一の統一されたダイアログで利用できるようになりました。

Screenshot of Azure service connection top level options.

Identity型には、Azureサービス接続がサポートするすべての認証スキームが一覧表示されます。

Screenshot of Identity Type.

アプリ登録の場合、クレデンシャルをワークロードIDフェデレーションまたはシークレットとして独立して選択できます。

既存のマネージドIDを選択して、ワークロードIDフェデレーションを使用するサービス接続を構成できるようになりました。まず、ユーザー割り当てのマネージドIDを作成します

次に、Azureサービス接続を作成し、Managed identityのアイデンティティ型を選択します。これにより、マネージドIDにフェデレーションIDクレデンシャルが構成されます。

Screenshot of Managed Identity support.

エージェント(pool)に割り当てられたマネージドIDを使用するオプションは、*Managed identity (agent-assigned)*に名前が変更されました。過剰な権限を持つマネージドIDの共有を防ぐために、エージェントプールに割り当てられたマネージドIDの代わりに、ワークロードIDフェデレーションを使用するマネージドIDを使用することをお勧めします。

マイクロソフトEntra IDでアプリ登録が無効になっている場合、マネージドIDも推奨されるオプションです。

ワークロードIDフェデレーションを使用するマネージドIDを使用するには、まずマネージドIDを保持するサブスクリプションとリソースグループを選択します。これは、パイプラインジョブでサービス接続がアクセスするサブスクリプションとは異なる場合があります。ワークロードIDフェデレーション用に構成されたマネージドIDを選択します。ユーザーは、マネージドIDにフェデレーションIDクレデンシャルを作成するために、Managed Identity Contributerロールまたは同等の権限が必要です。

サービス接続のデプロイメントスコープとして使用されるサブスクリプションを選択し続けます。

Screenshot of Managed Identity selection.

一部の組織では、アプリ登録のService Management ReferenceにITSMデータベースからの関連コンテキスト情報を入力する必要があります。必要に応じて、サービス接続作成時にこの参照を指定できます。

新しいAzureサービス接続作成エクスペリエンスは、来月にかけて展開されます。詳細については、以下を参照してください。

Azure Pipelinesを使用してデプロイメントを継続することが容易になりました。これは、例えば、複数のAzureリージョンにわたってアプリケーションの新しいバージョンをデプロイする場合に役立ちます。

5つの連続したAzureリージョンにデプロイする必要があるとします。パイプラインには各リージョンのステージがあり、各ステージにはAzureResourceManagerTemplateDeploymentタスクを実行するジョブがあり、その後にいくつかのテレメトリを記録します。後者は重要ではありませんが、あると便利です。テレメトリの記録に問題があると想像してください。今、ステージが失敗し、デプロイメントが停止します。

このスプリントから、ステージが失敗した場合でも、その子ステージの実行を再開できます。

Screenshot of running child stages if parent stage fails.

HTMLベースのコンテンツをWikiに貼り付けることが容易になりました。リンク、リスト、テーブル、画像、Excelシート、Microsoft Teamsメッセージ、電子メール、Azure Data ExplorerクエリなどのHTML要素が自動的にMarkdown構文に変換され、スムーズな編集が可能になります。

注意事項

ここで議論されている機能は今後二~三週にわたって順次展開されます。

Azure DevOpsサービスを体験してみてください。

これらの機能についてどう思っているかお聞きしたいと思います。 フィードバックメニューを使用して問題を報告するか、提案を提出してください。

Make a suggestion

アドバイスや回答を必要とする質問がある場合、Stack Overflowコミュニティで聞いてください。

ありがとうございました。

Dan Hellem

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment