Skip to content

Instantly share code, notes, and snippets.

@kkamegawa
Created March 23, 2025 12:33
Show Gist options
  • Save kkamegawa/6ad133cb3c2438b8f9fcfd9f1a479be2 to your computer and use it in GitHub Desktop.
Save kkamegawa/6ad133cb3c2438b8f9fcfd9f1a479be2 to your computer and use it in GitHub Desktop.
translate to Japanese to Azure DevOps release notes(unofficial) from https://learn.microsoft.com/azuare/devops/release-notes/2025/sprint-253-update?WT.mc_id=DOP-MVP-4039781

セキュリティの強化とマルチリポジトリ統合 - Azure DevOps Sprint 253 アップデート

In this article

この更新では、Azure DevOps全体でセキュリティと認証を改善しています。Azure DevOps OAuthのオーバーラッピングシークレットにより、シークレットのローテーションがシームレスになり、GitHub Advanced Securityはセキュリティ概要ページに優れたフィルタリングを提供しながら、依存関係とコードスキャンのアラートを正しくルーティングするマルチリポジトリパブリッシングを実現します。

Azure Pipelinesのホストイメージが更新され、Ubuntu-24.04、Windows 2025、およびmacOS-15 Sequoiaが含まれ、より安全で信頼性の高いエクスペリエンスを確保します。

詳細についてはリリースノートをご確認ください。

Azure DevOps OAuthの新機能であるオーバーラッピングシークレット機能の導入を発表できることを嬉しく思います。この機能は、セキュリティを強化し、シークレットのローテーションを合理化するように設計されています。この機能により、以前のシークレットがアクティブなままの状態で、OAuthクライアントに新しいシークレットを追加でき、アプリケーションの継続的な運用を確保します。これらのシークレットは、APIを介してプログラムで、またはVisual Studio AppページのUIを通じて管理できます。

継続的なセキュリティ改善の一環として、Azure DevOps OAuthは2026年に廃止が予定されています。改善されたセキュリティ機能と長期的な投資のために、Microsoft Entra ID OAuthへの移行をお勧めします。それまでの間、新しいオーバーラッピングシークレット機能を使用して、定期的にシークレットをローテーションすることをお勧めします。

今後数週間で、プロジェクトサマリーページから言語統計タグを廃止する予定です。これらのタグを削除することでパフォーマンスが最適化され、読み込み時間が短縮され、より応答性の高いインターフェースが実現します。

更新は自動的に行われ、ユーザー側での操作は必要ありません。

Screenshot of tags being removed.

リスクタブの下に、組織全体において、新規、修正済み、却下されたセキュリティアラートを表示する新しい列が追加されました。プロジェクト、ツール(シークレット、依存関係、コードスキャン結果)によるフィルタリングオプションと、検索範囲を定義する時間ベースのフィルターを追加しました。

さらに、フィルターを適用すると URLクエリパラメータが追加され、フィルター済みのビューを組織内の他のメンバーと共有できるようになります。

Screenshot of Security overview risk page.

今まで、パイプライン定義があるリポジトリと、GitHub Advanced Security によってスキャン対象とされるソースコードが格納されているリポジトリが分かれている場合、結果が誤ったリポジトリに送信され、処理されていました。つまり、ソースコードが存在するリポジトリにアラートを公開する代わりに、パイプライン定義があるリポジトリに表示されていました。

今回の更新で、マルチリポジトリシナリオにおいて、依存関係スキャンとコードスキャンの両方が、スキャンされたソースコードを含むリポジトリに正しくアラートをルーティングするようになります。

この機能を有効にするには、作業ディレクトリ内のリポジトリからパブリッシュ先のリポジトリを推測するために、パイプライン環境変数 advancedsecurity.publish.repository.infer: true を設定します。

あるいは、リポジトリを明示的にチェックアウトしない場合や、リポジトリのチェックアウトにエイリアスを使用する場合は、代わりに変数 advancedsecurity.publish.repository: $[ convertToJson(resources.repositories['YourRepositoryAlias']) ] を使用します。

YAMLコードスニペットは以下の通りです。

trigger:
- main

resources:
  repositories:
    - repository: BicepGoat
      type: git
      name: BicepGoat
      ref: refs/heads/main
      trigger:
        - main

jobs:
  # 明示的 - `advancedsecurity.publish.repository` は明示的にSARIFを送信するリポジトリを定義します
  - job: "AdvancedSecurityCodeScanningExplicit"
    displayName: "🛡 Infrastructure-as-Code Scanning (Explicit)"
    variables:
      advancedsecurity.publish.repository: $[ convertToJson(resources.repositories['BicepGoat']) ]
    steps:
      - checkout: BicepGoat
      - task: TemplateAnalyzerSarif@1
        displayName: Scan with Template Analyzer
      - task: AdvancedSecurity-Publish@1
        displayName: Publish to IaC Scanning Results to Advanced Security


  # 推測 - `advancedsecurity.publish.repository.infer` は、`AdvancedSecurity-Publish` がビルドエージェント上の
  # 作業ディレクトリからSARIFを送信するリポジトリを推測する必要があることを指定します
  - job: "AdvancedSecurityCodeScanningInfer"
    displayName: "🛡 Infrastructure-as-Code Scanning (Infer)"
    variables:
      advancedsecurity.publish.repository.infer: true
    steps:
      - checkout: BicepGoat
      - task: TemplateAnalyzerSarif@1
        displayName: Scan with Template Analyzer
      - task: AdvancedSecurity-Publish@1
        displayName: Publish to IaC Scanning Results to Advanced Security

GitHub Advanced Securityアラートイベント用のサービスフックを設定できるようになりました。含まれるイベントは以下の通りです。

  • 新規アラートの作成
  • アラートデータの変更
  • アラート状態の変更

他のリポジトリイベントと同様に、リポジトリとブランチでフィルタリングできます。アラートについては特に、アラートタイプ(依存関係、コードスキャン、またはシークレット)とアラートの重要度でフィルタリングできます。

Screenshot of  filter by alert type.

プレビューに参加するには、プレビュー申込フォームに記入するか、メールをお送りください!

4月末にpnpm v8のサポートが終了することに伴い、次回の依存関係スキャンの更新でpnpm v9のサポートが含まれます。この更新は、Developer Communityでのpnpm v9サポートのリクエストに応えるものです。

Azure Pipelinesのホストエージェントを安全かつ最新の状態に保つための更新をロールアウトしています。これらの更新には、Ubuntu-24.04、Windows 2025イメージ、macOS-15 Sequoiaのサポート追加と、Ubuntu-20.04やWindows Server 2019などの古いイメージの廃止が含まれます。

詳細については、ブログをご覧ください。

macOS-15イメージは4月1日からAzure Pipelinesホストエージェントで利用可能になります。このイメージを使用するには、YAMLファイルを更新して vmImage:'macos-15' を含めてください。

- job: macOS15
  pool:
    vmImage: 'macos-15'
  steps:
  - bash: |
      echo Hello from macOS Sequoia
      sw_vers

macOS-15のインストール済みソフトウェアについては、イメージ構成をご覧ください。

macOS-latest を指定した場合、引き続き macOS-14 イメージが使用されます。4月に macOS-latestmacOS-15 を使用するように更新する予定です。

windows-2025イメージがAzure Pipelinesホストエージェントでプレビューとして利用可能になりました。このイメージを使用するには、YAMLファイルを更新して vmImage:'windows-2025' を含めてください:

- job: win2025
  pool:
    vmImage: 'windows-2025'
  steps:
  - pwsh: |
      Write-Host "(Get-ComputerInfo).WindowsProductName"
      Get-ComputerInfo | Select-Object WindowsProductName
      Write-Host "`$PSVersionTable.OS"
      $PSVersionTable.OS

Windows Server 2025のインストール済みソフトウェアについては、イメージ構成をご覧ください。

今後数週間で、ubuntu-latest を指定するパイプラインジョブは、ubuntu-22.04 の代わりに ubuntu-24.04 を使用するようになります。

ubuntu-24.04イメージで利用できなくなったツールを使用するタスクのガイダンスについては、ブログをご覧ください。Ubuntu 22.04を引き続き使用するには、ubuntu-22.04 イメージラベルを使用してください。

- job: ubuntu2404
  pool:
    vmImage: 'ubuntu-24.04'
  steps:
  - bash: |
      echo Hello from Ubuntu 24.04
      lsb_release -d
  - pwsh: |
      Write-Host "`$PSVersionTable.OS"
      $PSVersionTable.OS

Ubuntu 20.04イメージは間もなくサポートが終了するため、Azure Pipelinesでのサポートを廃止します。ブラウンアウトスケジュールを含む廃止計画については、ブログをご覧ください。

1年ほど前に、Workload identity federationを一般提供開始しました。Workload identity federationを使用すると、シークレットなしでサービス接続を構成できます。サービス接続を構成する基礎となるID(アプリ登録、マネージドID)は、IDのフェデレーション資格情報で構成された意図された目的(サービス接続)にのみ使用できます。

現在、新しいAzureおよびDockerサービス接続のフェデレーション資格情報の形式を変更しています。既存のサービス接続は以前と同様に機能します。

Azure DevOps issuer Entra issuer(新しいサービス接続)
Issuer https://vstoken.dev.azure.com/<organization id> https://login.microsoftonline.com/<Entra tenant id>/v2.0
Subject sc://<organization name>/<project name>/<service connection name> <entra prefix>/sc/<organization id>/<service connection id>

構成に変更はなく、トークンの取得方法も同じままです。パイプラインタスクを更新する必要はなく、以前と同様に機能します。

サービス接続を作成する手順は変更されず、ほとんどの場合、新しい発行者は表示されません。Azureサービス接続を手動で構成する場合、新しいフェデレーション資格情報が表示されます。

Screenshot of FIC example.

アプリ登録またはWorkload identity federation資格情報を作成する際、これまでと同様にこれらの値をコピーしてください。

REST APIを使用して自動でサービス接続を作成する場合、APIから返されるフェデレーション資格情報を使用します。

authorization.parameters.workloadIdentityFederationIssuer
authorization.parameters.workloadIdentityFederationSubject

同様に、Terraformのazuredevopsプロバイダーでサービス接続を作成する場合、azuredevops_serviceendpoint_azurerm リソースは workload_identity_federation_issuerworkload_identity_federation_subject 属性を返します。

Gradle 8.0をサポートする新しい Gradle@4 タスクが作成されました。ビルトインのコードカバレッジオプションは、Gradle@4 以降の Gradle タスクから削除されています。パイプラインでGradleとコードカバレッジを使用するには:

SonarQube分析の設定は、SonarQubeまたはSonarCloud拡張機能のタスクPrepare Analysis Configurationに移動されました。

YAMLパイプラインの最も要望の多かった機能のひとつは、アイテムのリストを含むパラメータを定義することでした。

今回のスプリントで、この機能を提供する stringList という新しいパラメータタイプを追加しました。

例えば、パイプラインの実行をキューに入れる人が、ペイロードをデプロイしたいリージョンを選択できるようにしたい場合、以下の例のように設定できます。

parameters:
- name: regions
  type: stringList
  displayName: Regions
  values:
    - WUS
    - CUS
    - EUS

stages:
- ${{ each stage in parameters.regions}}:
  - stage: ${{stage}}
    displayName: Deploy to ${{stage}}
    jobs:
    - job:
      steps:
      - script: ./deploy ${{stage}}

このパイプラインをキューに入れる際、以下のスクリーンショットに示されているように、デプロイするリージョンを複数選択できるオプションが追加されました。

Screenshot of choosing multiple regions.

YAMLパイプラインのセキュリティを向上させるため、ステージの実行を要求したユーザーを知りたい場合があります。この要望に対応するため、Build.StageRequestedByBuild.StageRequestedById という2つの新しい定義済み変数を追加しています。これらの変数は、実行ではなくステージに関するものである点を除いて、Build.RequestedFor および Build.RequestedForId 変数と似ています。

手動でトリガーされたステージやステージの再実行など、ユーザーが明示的にトリガーした場合、その2つの変数にユーザーのIDが使用されます。

今回のリリースでは、v2タスクにいくつかの改善が含まれています。

  • .coverage、.covx、.covb、.cjson、.xml、.lcov、pycov1を含む様々なコードカバレッジフォーマットのサポートを拡大しました
  • ファイル名、カバーされた/カバーされていない行など、詳細なコードカバレッジ情報を含む包括的なcjsonファイル(およびコードカバレッジレポート)の生成 Screenshot of code coverage.
  • 差分カバレッジ(PRカバレッジ)のサポート:v2は同じパイプライン内の複数の言語の差分カバレッジPRコメントを生成できます
  • v2タスクは、v1タスクではサポートされていなかったビルド品質チェックタスクをサポートするようになりました

カスタム列を含むテストケースをXLSXでエクスポートできるようになりました。ユーザーのフィードバックに基づき、Test Plansはカスタム列を含むテストケースのエクスポートをサポートし、共有および分析するデータをより柔軟にコントロールできるようになりました。この改善により、エクスポートする情報を必要に応じてカスタマイズし、実用的なものにできます。

注意事項

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

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

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

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

Silviu Andrica

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