GitLab 16.4リリースノート
2023年9月22日、GitLab 16.4が以下の機能とともにリリースされました。
さらに、今月の注目すべきコントリビューターを含む、すべてのコントリビューターに感謝します。
今月の注目すべきコントリビューター: Kik
Kikは、GitLabにおけるActivityPubサポートの設計と実装開始において重要な役割を担ってきました。彼の深く詳細な元々のアーキテクチャ計画は、当社の製品チームに受け入れられ、現在エピックとして GitLabプロジェクトに存在しています。このコードを実装する最初のMRは最近マージされ、その後ドキュメントが追加されました。
この大規模な機能のサポートが拡大するにつれて、Kikはコラボレーション、イテレーション、そして透明性というGitLabの価値観を体現していることを示しました!
Kikは長年GitLabコミュニティの一員であり、7年以上前に最初のイシューを記録しました。彼はここ数か月、もう少し積極的に活動するようになりました。彼のコントリビュートについて尋ねられた際、彼は次のように述べました:
何か強調すべき点があるとすれば、おそらくGitLabがいかに可能にし、そのソースコードを見ていじることができるか、そしてどんなに意欲的なコントリビュートでも歓迎しているか、ということでしょう。 :)
彼はまた、記念品を選ぶ代わりに、彼の名前で木を植えてもらうことを選択することで、私たちの持続可能性の取り組みを開拓する手助けをすることを選びました。🌳
Kikさん、GitLabの構築に協力し、素晴らしいコミュニティの一員となってくれてありがとうございます! 🙌
主要な機能
カスタマイズ可能なロール
グループオーナーまたは管理者は、ロールと権限メニューのUIを使用して、カスタムロールを作成および削除できるようになりました。カスタムロールを作成するには、既存のベースロールに権限を追加します。現在、ベースロールに追加できる権限の数には限りがあり、これにはきめ細やかなセキュリティ権限、マージリクエストを承認する機能、およびコードを表示する機能が含まれます。各マイルストーンで、既存の権限に追加してカスタムロールを作成できる新しい権限がリリースされます。
プライベートプロジェクト用のワークスペースを作成
- プラン: Premium、Ultimate
- 提供形態: GitLab.com
- リンク: ドキュメント
以前は、プライベートプロジェクト用のワークスペースを作成することはできませんでした。プライベートプロジェクトをクローンするには、ワークスペースを作成した後にのみ自身を認証することができました。
GitLab 16.4では、公開またはプライベートプロジェクトのワークスペースを作成できます。ワークスペースを作成すると、ワークスペースで使用するパーソナルアクセストークンを取得できます。このトークンを使用すると、追加の設定や認証なしで、プライベートプロジェクトをクローンし、Git操作を実行できます。
自身のGitLabユーザーIDを使用してローカルでクラスターにアクセス
デベロッパーがKubernetesクラスターにアクセスできるようにするには、デベロッパークラウドアカウントまたはサードパーティの認証ツールが必要です。これにより、クラウドのアイデンティティおよびアクセス管理の複雑さが増します。現在、デベロッパーが自身のGitLabアイデンティティとKubernetes用のエージェントのみを使用してKubernetesクラスターにアクセスできるように付与できます。従来のKubernetes RBACを使用して、クラスター内の認可を管理します。
GitLabパイプラインにおけるOIDCクラウド認証とともに、これらの機能によりGitLabユーザーは、専用のクラウドアカウントなしでクラウドのリソースにアクセスでき、セキュリティとコンプライアンスを危険にさらすことはありません。
クラスターアクセスのこの最初のイテレーションでは、Kubernetesの設定を手動で管理する必要があります。エピック11455は、関連するコマンドでGitLab CLIを拡張することにより、セットアップを簡素化することを提案しています。
グループ/サブグループレベルの依存関係リスト
依存関係のリストをレビューする際には、全体像を把握することが重要です。プロジェクトレベルで依存関係を管理することは、すべてのプロジェクトの依存関係を監査したい大規模な組織にとって問題です。このリリースにより、サブグループを含むプロジェクトまたはグループレベルで、すべての依存関係を確認できます。この機能は現在デフォルトで利用可能です。
脆弱性の一括ステータス更新
一部の脆弱性は一括で対処する必要があります。それらが誤検出であるか、検出されなくなったかに関わらず、ノイズを最小限に抑えるし、脆弱性を簡単にトリアージすることが重要です。このリリースにより、グループまたはプロジェクトの脆弱性レポートから複数の脆弱性のステータスを一括で変更し、コメントを付けることができます。
きめ細やかなセキュリティ権限
一部の組織は、セキュリティチームに最小限のアクセス権限のみを与え、最小権限の原則を遵守したいと考えています。セキュリティチームはコード更新を書き込むアクセス権限を持つべきではありませんが、マージリクエストを承認し、脆弱性を表示し、脆弱性のステータスを更新できる必要があります。
GitLabは現在、レポーターロールのアクセス権限に基づいてカスタムロールを作成することをユーザーに許可していますが、以下の追加の権限が含まれています:
- 依存関係リストの表示 (
read_dependency)。 - セキュリティダッシュボードおよび脆弱性レポートの表示 (
read_vulnerability)。 - マージリクエストの承認 (
admin_merge_request)。 - 脆弱性のステータス変更 (
admin_vulnerability)。
この非推奨エントリに記載されているように、17.0でデベロッパーロールからすべてのティアの脆弱性のステータスを変更する機能を削除する予定です。この提案された変更に関するフィードバックは、イシュー424688で共有できます。
早送りマージのマージトレインサポート
早送りマージは、マージコミットを回避しますが、より多くのリベースを必要とする一般的で人気のあるマージ方法です。別途、マージトレインは、mainブランチへの頻繁なマージに関連するいくつかの大きな課題を解決するのに役立つ強力なツールです。残念ながら、このリリース以前は、マージトレインと早送りマージを一緒に使用することはできませんでした。
このリリースでは、セルフマネージド管理者は同じプロジェクトで早送りマージとマージトレインの両方を有効にできるようになりました。マージトレインのすべての利点を得ることができます。マージトレインは、マージする前にすべてのコミットが連携して機能することを確認し、早送りマージのよりクリーンなコミット履歴を実現します!
早送りマージトレインを有効にするには、デフォルトで無効になっている機能フラグfast_forward_merge_trains_supportを見つけて有効にします。
id_tokenをグローバルに設定し、個々のジョブの設定を排除
GitLab 15.9では、id_tokenを優先して以前のJSON Webトークンバージョンの非推奨化を発表しました。残念ながら、この変更に対応するためにジョブを個別に変更する必要がありました。id_tokenへのスムーズな移行を可能にするため、GitLab 16.4以降、id_tokensを.gitlab-ci.ymlでグローバルデフォルト値として設定できます。この機能は、すべてのジョブのid_token設定を自動的に設定します。OpenID Connect (OIDC) 認証を使用するジョブでは、個別のid_tokenを設定する必要がなくなりました。
id_tokenとOIDCを使用してサードパーティサービスで認証する。JSON Webトークンのaudクレームを設定するために、必須のサブキーワードaudを使用します。
規模とデプロイ
Elasticsearchインデックスの整合性が一般提供開始
GitLab 16.4では、Elasticsearchインデックスの整合性がすべてのGitLabユーザーに一般提供されるようになりました。インデックスの整合性は、欠落しているリポジトリデータを検出して修正するのに役立ちます。この機能は、グループまたはプロジェクトにスコープされたコード検索で結果が返されない場合に自動的に使用されます。
Omnibusの改善
- プラン: Free、Premium、Ultimate
- リンク: ドキュメント
- GitLab 16.4には、OpenSUSE 15.5用のパッケージが含まれています。
追加または失効された絵文字リアクション用のWebhookを追加
可能な限り多くの自動化とサードパーティシステムとのインテグレーションの機会を提供するために、ユーザーが絵文字リアクションを追加または失効したときにトリガーするWebhookの作成サポートを追加しました。
たとえば、ユーザーがイシューやマージリクエストに絵文字で反応したときに、新しいWebhookを使用してメールを送信できます。
カスタムロールの名前と説明をAPIを使用して作成
カスタムロールを作成する際、メンバーロールAPIを使用して名前(必須)と説明(オプション)を追加できるようになりました。既存のすべてのカスタムロールにはCustomという名前が付けられており、APIを使用してカスタムロールの名前を任意の名前に変更できます。
グループメンションのSlack通知をトリガーする
GitLabは、特定のGitLabイベントに対してSlackワークスペースチャンネルにメッセージを送信できます。このリリースにより、以下で公開およびプライベートコンテキストにおけるグループメンションのSlack通知をトリガーすることができるようになりました:
- イシューとマージリクエストの説明
- イシュー、マージリクエスト、コミットのコメント
アプリケーション設定で利用可能な構成可能なインポート制限を展開する
最近、いくつかのハードコードされたインポート制限を構成可能なアプリケーション設定に変更し、セルフマネージドGitLab管理者がニーズに応じてこれらの制限を調整できるようにしました。
このリリースでは、アーカイブファイルの解凍するためのタイムアウトを構成可能なアプリケーション設定として追加しました。
この制限は210秒にハードコードされていました。GitLab.comおよびデフォルトでセルフマネージドインストールの場合、この制限を210秒に設定しました。セルフマネージドGitLabとGitLab.comの管理者は、必要に応じてこの制限を調整できます。
サービスデスク用のカスタムメールアドレス
サービスデスクは、お客様のビジネスと顧客との間で最も意味のあるつながりの1つです。これで、独自のカスタムメールアドレスを使用して、サービスデスクのメールを送受信できます。この変更により、ブランドアイデンティティを維持し、顧客が正しいエンティティとコミュニケーションしているという信頼を植え付けることがはるかに簡単になります。
この機能はベータ版です。ユーザーの皆様には、ベータ機能をお試しいただき、フィードバックイシューでフィードバックを提供していただくことをお勧めします。
GeoはCloud Native Hybridサイトでの統合URLをサポート
Geoは現在、Cloud Native Hybridサイトでの統合URLをサポートしており、Cloud Native Hybridサイトはプライマリサイトと単一の外部URLを共有できます。これにより、単一の共通URLを使用して、所在地に基づいて最適なGeoセカンダリサイトに自動的に誘導できるリモートチームに、シームレスなGitLab UIとGitデベロッパーエクスペリエンスが提供されます。この更新により、統合URLはすべてのGitLabリファレンスアーキテクチャでサポートされるようになりました。
Geoはオブジェクトストレージを検証します
Geoは、オブジェクトストレージのレプリケーションがGitLabによって管理される場合に、オブジェクトストレージを検証する機能を追加します。オブジェクトストレージデータを破損から保護するため、Geoはプライマリサイトとセカンダリサイト間でファイルサイズを比較します。Geoがお客様のディザスターリカバリー戦略の一部であり、GitLab管理のオブジェクトストレージのレプリケーションを有効にしている場合、これはデータ損失から保護します。さらに、セカンダリサイトに既に存在する可能性のあるデータをコピーする必要性を減らします。たとえば、古いプライマリをセカンダリサイトとして再度追加する場合です。
統合されたDevOpsとセキュリティ
ダウンストリームパイプラインにおけるenvironmentキーワードのサポート
CI/CDパイプラインジョブからダウンストリームパイプラインをトリガーする必要がある場合、triggerキーワードを使用できます。デプロイ管理を強化するため、triggerを使用する際にenvironmentキーワードで環境を指定できるようになりました。たとえば、/web-appプロジェクトのmainブランチに対して、環境名devと指定された環境URLを持つダウンストリームパイプラインをトリガーすることができます。
以前は、CIとCDで別々のパイプラインを実行し、triggerキーワードを使用してCDパイプラインを開始した場合、環境の詳細を指定することはできませんでした。これにより、CIプロジェクトからのデプロイを追跡することが困難でした。環境のサポートを追加することで、プロジェクト間のデプロイの追跡が簡素化されます。
ユーザーが適用されるセキュリティポリシーに対するブランチ例外を定義できるようにする
セキュリティポリシーは、GitLabプロジェクトでスキャナーを実行するだけでなく、セキュリティとコンプライアンスを確保するためにMRチェック/承認を強制します。ブランチ例外を使用すると、ポリシーをよりきめ細かく適用し、スコープ外の任意のブランチに対する適用を除外することができます。デベロッパーが、意図せず厳格な適用によって影響を受ける開発またはテストブランチを作成した場合、セキュリティチームと協力してセキュリティポリシー内でそのブランチを免除することができます。
スキャン実行ポリシーの場合、パイプラインまたはスケジュールルールタイプに対して例外を設定できます。スキャン結果ポリシーの場合、スキャン結果またはライセンス結果ルールタイプに対してブランチ例外を指定できます。
アクセストークンの有効期限切れ通知
グループおよびプロジェクトのアクセストークンは自動化によく使用されます。管理者およびグループオーナーは、これらのトークンのいずれかが有効期限に近づいているときに通知を受け取り、中断を回避することが重要です。管理者およびグループオーナーは、トークンの有効期限まで7日以内になると通知メールを受け取るようになりました。
アクセス有効期限切れのメール通知
ユーザーは、グループまたはプロジェクトへのアクセス有効期限が切れる7日前にメール通知を受け取ります。これは、アクセス有効期限日が設定されている場合にのみ適用されます。以前は、アクセスが有効期限切れになった場合の通知はありませんでした。事前通知により、GitLab管理者に連絡して継続的なアクセスを確保できます。
ブラウザベースDASTアクティブチェック22.1がデフォルトで有効化されました
ブラウザベースDASTアクティブチェック22.1がデフォルトで有効になりました。これは、無効になっているZAPチェック6を置き換えます。チェック22.1は、「制限されたディレクトリへのパス名の不適切な制限(パストラバーサル)」を特定します。これは、URLエンドポイントのパラメータにペイロードを挿入することで悪用され、任意のファイルを読み取りできるようにします。
オペレーショナルコンテナスキャンのプライベートレジストリサポート
オペレーショナルコンテナスキャンは、プライベートコンテナレジストリからイメージにアクセスしてスキャンできるようになりました。OCSはイメージプルシークレットを使用してプライベートレジストリコンテナにアクセスします。
依存関係とライセンススキャンのpnpmロックファイルv6.1サポート
Weyert de Boer氏からのコミュニティコントリビュートのおかげで、GitLab依存関係およびライセンススキャンは、v6.1ロックファイル形式を使用するpnpmプロジェクトの分析をサポートするようになりました。
SASTアナライザーの更新
GitLab SASTには、GitLab静的な解析チームが積極的に保守、更新、サポートする多くのセキュリティアナライザーが含まれています。16.4リリースマイルストーン中に以下の更新を公開しました:
- KICSベースのアナライザーをKICSスキャナーのバージョン1.7.7に更新しました。詳細については、変更履歴を参照してください。
- SobelowベースのアナライザーをSobelowスキャナーのバージョン0.13.0に更新しました。また、より新しいElixirリリースとの互換性を向上させるため、アナライザーのベースイメージをElixir 1.13に更新しました。変更履歴を参照してください
- PMD ApexベースのアナライザーをPMDスキャナーのバージョン6.55.0に更新しました。詳細については、変更履歴を参照してください。
- PHPCS Security Auditベースのアナライザーを変更し、
Security.Misc.IncludeMismatchルールを削除しました。詳細については、変更履歴を参照してください。 - Semgrepベースのアナライザーで使用されるルールを更新し、ルールエラーを修正し、ルール説明の破損したリンクを修正し、同じルールIDを持つJavaとScalaのルール間の競合を解決しました。また、カスタムルールファイルの最大サイズを10 MBに増やしました。詳細については、変更履歴を参照してください。
GitLab管理のSASTテンプレート (SAST.gitlab-ci.yml)を含め、GitLab 16.0以降を実行している場合、これらの更新を自動的に受け取ります。特定のアナライザーのバージョンを維持し、自動更新を防ぐには、そのバージョンを固定できます。
以前の変更については、先月の更新を参照してください。
SASTの脆弱性追跡機能の改善
GitLab SAST 高度な脆弱性追跡は、コードが移動しても発見を追跡し続けることで、トリアージをより効率的にします。
GitLab 16.4では、新しい言語とアナライザーに対して高度な脆弱性追跡を有効にしました。その既存のカバレッジに加えて、高度な追跡が以下で利用可能になりました:
- Java、SpotBugsベースのSASTアナライザー。
- PHP、PHPCS Security AuditベースのSASTアナライザー。
これは、GitLab 16.3でリリースされた以前の拡張機能と改善に基づいています。エピック5144でさらなる改善を追跡しています。
これらの変更は、GitLab SAST アナライザーの更新されたバージョンに含まれています。プロジェクトの脆弱性発見は、更新されたアナライザーでプロジェクトがスキャンされた後、新しい追跡シグネチャで更新されます。SASTアナライザーを特定のバージョンにピン留めしていない限り、この更新を受け取るためにアクションを実行する必要はありません。
パイプライン固有のCycloneDX SBOMエクスポート
CIパイプラインで検出されたすべてのコンポーネントをリストするCycloneDX SBOMをダウンロードできるAPIを追加しました。これには、アプリケーションレベルの依存関係とシステムレベルの依存関係の両方が含まれます。
メンテナーロールを持つユーザーは、Runnerの詳細を表示できます
グループのメンテナーロールを持つユーザーは、グループRunnerの詳細を表示できるようになりました。このロールを持つユーザーは、グループRunnerを表示して、どのRunnerが利用可能か、または自動的に作成されたRunnerがグループネームスペースに正常に登録されたことを検証するかを迅速に判断できます。
macOS上のSaaS Runner用のmacOS 13 (Ventura) イメージ
チームはmacOS 13でAppleエコシステム向けアプリケーションをシームレスに作成、テスト、デプロイできるようになりました。
macOS上のSaaS Runnerを使用すると、安全なオンデマンドGitLab Runnerビルド環境で、GitLab CI/CDと統合されたmacOSを必要とするアプリケーションのビルドとデプロイにおける開発チームの開発速度を向上させることができます。
GitLab Runner 16.4
- プラン: Free、Premium、Ultimate
- リンク: ドキュメント
本日、GitLab Runner 16.4もリリースします!GitLab Runnerは、CI/CDジョブを実行し、結果をGitLabインスタンスに送信する、軽量で拡張性の高いエージェントです。GitLab Runnerは、GitLabに含まれるオープンソースの継続的インテグレーションサービスであるGitLab CI/CDと連携して動作します。
新機能
バグ修正
GitLab Runnerのすべての変更リストは変更履歴にあります。