注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
マーキングと組織は、ユーザーの適格性に基づいてリソースへのアクセスを制限します。
依存リソースを派生させる際に、制限されたコンテンツを削除または難読化した場合、その派生リソースからマーキングや組織を外したいことがあります。継承されたマーキングと組織を外す処理は、入力トランスフォームのプロパティである stop_propagating と stop_requiring を使用して実行できます。
stop_propagating は、継承されたマーキング(たとえば、PII)を外すために使用します。stop_requiring は、継承された組織(たとえば、Palantir)を外すために使用します。stop propagating と stop requiring のキーフレーズは、組織とマーキングにのみ適用され、ロールには適用されません。on_branches=[..., "not-protected-branch"])、ビルドに失敗します。下の図では、プロジェクト C 内の灰色のデータセットボックスは、宛先プロジェクト内のすべての入力に対してプロジェクト参照を追加する必要があることを示しています。

保護されたブランチ(たとえば、main)から新しいブランチを作成します。
入力トランスフォームに stop_propagating と stop_requiring のいずれか、または両方のプロパティを追加します。例:

このコードを保護されたブランチにマージするためのプルリクエストを作成します。
マーキングに対するマーキングを削除権限、または組織に対するアクセスを拡大する権限を持つユーザーは、提案された変更を承認または拒否できます。複数のレビュー担当者を追加した場合、いずれかのレビュー担当者が拒否すると、プルリクエスト全体が拒否されます。
承認された場合、コードエディターが PR をマージし、出力データセットをビルドします。出力データセットがビルドされると、伝播されたマーキングや組織は適用されなくなります。
継承されたマーキング(たとえば、PII)を外すには、stop_propagating キーフレーズを使用します。
継承された組織(たとえば、Palantir)を外すには、stop_requiring キーフレーズを使用します。
これらのキーフレーズは、マーキングまたは組織を外す必要があるすべての入力に指定する必要があります。また、外す操作ごとに、その操作を適用する保護されたブランチを指定する必要があります。マーキングID、組織ID、ブランチは、常に引用符で囲んだ文字列として指定してください。
ユーザーは組織のうち1つ以上の要件を満たせばよいため、上流の組織を1つ以上指定する必要があります。指定した組織ごとに承認が必要になります。以下の詳細なワークフローでは、この点を説明する例を示しています。
Python では、入力コンストラクターでマーキングを外す操作を指定します。
Copied!1 2 3 4 5 6@transform( input_1=Input("<input_id>", stop_propagating=Markings([markingId1, ...], [branch1, ...]), stop_requiring=OrgMarkings([orgMarking1, ...], [branch2, ...])), output=Output("<output_id>") )
Markings クラスは、マーキングIDのリストと、マーキングを外す操作を適用する保護されたブランチのリストを受け取ります。マーキングIDは、設定ページのマーキングリストで確認できます。

OrgMarking クラスは、組織IDのリストと、マーキングを外す操作を適用する保護されたブランチのリストを受け取ります。組織IDは、設定ページの組織リストで確認できます。内部的には、組織は少し異なる種類のマーキングとして表現されているため、stop_requiring に続くトランスフォームのキーワードは OrgMarkings と呼ばれます。

Java では、自動登録されるトランスフォームの入力に付ける注釈で、マーキングを外す操作を指定します。
構文:
Copied!1 2 3 4 5 6 7 8@Compute public void myComputation( @StopPropagating(markings = {markingId1, ...}, onBranches = {branch1, ...}) @StopRequiring(orgMarkings = {orgId1, ...}, onBranches = {branch2, ...}) @Input("<input_id>") FoundryInput input, @Output("<output_id>") FoundryOutput output)
@StopPropagating と @StopRequiring の注釈は、マーキングIDの集合と、マーキングを外す操作を適用する保護されたブランチの集合を受け取ります。
マーキングまたはブランチを1つだけ指定する場合は、{} で囲む必要はありません(たとえば、@StopPropagating(markings = marking1, onBranches = "my-branch"))。
手動登録される Java トランスフォームでは、MyPipelineDefiner.java ファイルでの登録時に、次の構文を使用してマーキングを外す操作を指定します。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23@Override public void define(Pipeline pipeline) { HighLevelTransform highLevelManualTransform = HighLevelTransform.builder() .computeFunctionInstance(new HighLevelManualFunction()) .putParameterToInputAlias("myInput", "/path/to/input/dataset") .returnedAlias("/path/to/output/dataset") .desiredUnmarkings(Set.of( Unmarking.builder() .branch("branch1") .input(alias("/input1")) .output(alias("/output")) .markingId(MarkingId.valueOf("markingId")) .build(), Unmarking.builder() .branch("branch1") .input(alias("/input1")) .output(alias("/output")) .markingId(MarkingId.valueOf("orgId1")) .build() )) .build(); pipeline.register(highLevelManualTransform); }
SQL では、SparkSQL のヒント文を使用してマーキングを外す操作を指定します。
Copied!1 2 3CREATE TABLE <output_id> AS SELECT /*+ foundry_stop_propagating(markingId1, ...) foundry_stop_requiring(orgMarkingId1, ...) foundry_on_branches(branch1, ...) */ * FROM <input_id>
SQL でマーキングと組織を外す操作は、任意の SELECT 文に追加できます。例:
Copied!1 2CREATE TABLE <output_id> AS SELECT * FROM <input_1_id> CROSS JOIN (SELECT /*+ foundry_stop_propagating(markingId1) foundry_on_branches("my-branch") */ * FROM <input_2_id>)
一般に、コードを閲覧してプルリクエストを承認するには、
承認者はプロジェクトとリポジトリ自体に適用されている組織およびマーキングの要件を満たし、
基本的な Stemma の View Repository ワークフローを含むロールも持っている必要があります(デフォルトでは閲覧者ロールに含まれます)。また、承認モードを設定したり、組織やマーキングを外すプルリクエストを承認したりするには、それぞれの組織とマーキングに対する権限が必要です。ユーザーは、必ずしもその組織やマーキングのメンバーである必要はありません。
マーキングを外す操作を承認するユーザーは、そのマーキングに対するマーキングを削除ロールを持っている必要があります。

組織を外す操作を承認するユーザーは、そのマーキングに対するアクセスを拡大するロールを持っている必要があります。

データガバナンスユーザーは、リポジトリごと、および組織とマーキングごとに、新しい承認を必要とする条件を決めるモードを定義できます。


上の例は、再承認が必要なマーキング PHI が1個あるリポジトリ内のトランスフォームです。
上記の設定では、次のようになります。


上の例は、再承認が不要な組織 PALANTIR が1個あるリポジトリ内のトランスフォームです。
上記の設定では、次のようになります。
PALANTIR 組織を必須としないようにするために最初のプルリクエストを作成すると、PALANTIR 組織に対するアクセスを拡大するロールを持つユーザーから承認を得る必要があります。

トランスフォーム1:上の例は、マーキング PII が1個と組織 PALANTIR が1個あるトランスフォームです。PII マーキングには再承認が必要で、PALANTIR 組織には再承認が不要です。

トランスフォーム2:上の例は、再承認が不要なマーキング USA が1個あるトランスフォームです。
上記の設定では、次のようになります。
PII マーキングに対するマーキングを削除ロールを持つユーザー、および PALANTIR 組織に対するアクセスを拡大するロールを持つユーザーから承認を得る必要があります。PII マーキングに対するマーキングを削除ロールを持つユーザーからのみ
承認を求められます。USA マーキングに対するマーキングを削除ロールを持つユーザー、および PII マーキングに対するマーキングを削除ロールを持つユーザーから承認を得る必要があります。PII マーキングに対するマーキングを削除ロールを持つユーザーからのみ承認を求められます。PII マーキングに対するマーキングを削除ロールを持つユーザーからのみ承認を求められます。このシナリオ例では、コード編集者が機密性の高い上流プロジェクトの2個のデータセットを使用し、特定の情報を削除して、作成されたデータセットをより広い対象ユーザーが利用できるようにしようとしています。それぞれ2個のマーキングを持つ2個のデータセットは、下流プロジェクトに参照として追加されています。コード編集者は、4個のマーキングのうち3個の伝播を停止し、出力データセットに表示されないようにしようとしています。また、上流プロジェクトは OrgA または OrgB のユーザーに制限されており、下流のデータを OrgC のユーザーに配布することを意図しています。

変更前:コード編集者のブランチ上の出力データセットは、4個のマーキングすべてを継承しており、引き続き OrgA または OrgB のユーザーに制限されています。

変更後:保護されたブランチ(たとえば、メイン)にマージすると、出力データセットが継承するマーキングは1個だけになり、ユーザーが OrgA または OrgB のメンバーである必要はなくなります。
feature/clean-data ブランチに新しいトランスフォームを記述します。
マーキングの変更はすべて master ブランチに対して申請されるため、feature/clean-data で作業する際に承認は不要です。つまり、feature/clean-data ブランチで出力データセットをビルドしても、上流のマーキングはすべて引き続き継承されます。
コード編集者はメインブランチへのプルリクエストを作成し、lemon、apple、cherry のマーキングで制限されたデータを管理するデータガバナンスユーザーに承認を申請します。また、OrgA のデータをほかの組織と共有する必要がある場合に承認できる、アクセスを拡大する権限を持つ OrgA の組織管理者にも承認を申請します。
継承された組織を削除してアクセスを拡大すると、継承された組織がすべて削除されますが、承認が必要なのは、トランスフォームに記載された組織に対する適切な権限を持つユーザーからのみです。すべての組織からの承認を必須にするには、`stop_requiring` コンポーネントにすべての ID を記載する必要があります。この例では、上流プロジェクトのデータに対して主に責任を持つのが OrgA であるため、編集者は組織間の承認プロセスに OrgA を選択しました。そのため、継承された組織を削除するには、OrgA の管理者からの承認のみが必要です。承認を申請する組織に応じて、編集者は `stop_requiring` の対象として次のいずれかを選択できます。 (1) OrgA(OrgA の管理者による承認)、 (2) OrgB(OrgB の管理者による承認)、または (3) OrgA と OrgB の両方(両方の組織の管理者による承認)。
結果として、出力データセットは入力から組織を一切継承せず、配置先のプロジェクトの組織のみを適用します。
データガバナンスユーザーと組織管理者は、承認が申請されたことを知らせる Foundry の通知を受け取ります。
PR が承認されたとすると、コード編集者はそれをマージし、上記の変更後の画像に示すように出力データセットをビルドします。
翌週、別のコード編集者が別のコードファイルを変更し、master にマージするための PR を作成します。再承認が必要なマーキングが1個もなければ、この PR はセキュリティレビューなしで承認できます。いずれかのマーキングで再承認が必要な場合、PR には、そのマーキングを管理するデータガバナンスユーザーまたは組織管理者によるセキュリティレビューが必要になります。