Protected Audience 입찰에서 보고 ID가 작동하는 방식 알아보기
개요
보고 ID는 광고와 연결된 식별자로, 입찰 생성, 입찰 점수 매기기, 보고에 사용할 수 있습니다. 보고 ID는 구매자가 관심분야 그룹 구성에 제공하며, 이 가이드에서 설명하는 다양한 조건에 따라 generateBid(), scoreAd(), reportResult(), reportWin()에서 사용할 수 있게 됩니다.
보고 ID를 사용하면 광고의 식별자를 보고할 수 있으며 할인과 같은 사용 사례도 지원됩니다.
두 가지 유형의 보고 ID가 세 개 있습니다.
- 선택할 수 없는 보고 ID
buyerReportingId(문자열)buyerAndSellerReportingId(문자열)
- 선택 가능한 보고 ID
selectableBuyerAndSellerReportingIds(문자열 배열)
선택 가능한 보고 ID가 사용되는지에 따라 보고 ID가 다르게 작동합니다. 선택할 수 없는 보고 ID만 사용하면 해당 ID는 보고 함수 내에서만 사용할 수 있습니다. 선택 가능한 보고 ID가 필요한 경우 선택 불가능한 보고 ID와 함께 사용되면 정의된 모든 ID가 generateBid() 및 scoreAd()에서도 사용할 수 있게 됩니다.
선택할 수 없는 보고 ID
buyerReportingId 및 buyerAndSellerReportingId는 관심분야 그룹 구성에 정의된 선택할 수 없는 보고 ID로, 구매자 및 판매자 보고 기능에서 사용할 수 있습니다. 구매자 및 판매자 보고 기능은 낙찰된 광고에 대해서만 실행되며, 이 기능은 낙찰된 광고에 대해 정의된 보고 ID를 수신합니다.
선택 가능한 보고 ID 없이 사용하면 구매자 보고 기능은 덮어쓰기 동작에 따라 buyerReportingId 또는 buyerAndSellerReportingId를 수신하고 판매자 보고 기능은 buyerAndSellerReportingId를 수신합니다. 관심분야 그룹 구성에 buyerReportingId도 buyerAndSellerReportingId도 정의되지 않은 경우 reportWin() 함수는 낙찰된 입찰의 관심분야 그룹 이름 (interestGroupName)을 수신합니다.
선택할 수 없는 ID는 선택 가능한 보고 ID와 함께 사용되지 않는 경우 generateBid() 및 scoreAd() 내에서 사용할 수 없습니다.
관심분야 그룹의 ID 보고
보고 ID는 관심분야 그룹의 각 광고에 대해 구매자가 정의합니다.
navigator.joinAdInterestGroup({
owner: 'https://buyer.example',
name: 'example-interest-group',
ads: [{
renderUrl: `https://buyer.example/ad.html`,
// buyerAndSellerReportingId goes to the buyer and seller reporting functions
buyerAndSellerReportingId: 'bsrid123',
// buyerReportingId is defined here as an example, but
// is not used due to the overwrite rules described later
buyerReportingId: 'brid123',
}]
});
판매자 보고
판매자 보고 단계에서 buyerAndSellerReportingId 값을 reportResult()에서 사용할 수 있습니다.
function reportResult(..., browserSignals, ...) {
const {
buyerAndSellerReportingId // 'bsrid123'
} = browserSignals;
sendReportTo(`https://seller.example/report?bsrid=${buyerAndSellerReportingId}`);
}
ID가 reportResult() 내에서 사용 가능해지기 전에 관심분야 그룹 소유자, 입찰 스크립트 URL, 렌더링 URL, 광고 크기 (광고 크기는 2025년 1분기까지 이 검사에서 제외됨)를 사용하여 k-익명성이 검사됩니다. k-익명성이 충족되지 않으면 reportResult() 함수는 계속 실행되지만 함수 내에서 보고 ID 값을 사용할 수 없습니다.
구매자 보고
입찰의 구매자 보고 단계에서 reportWin()가 하나의 보고 ID를 사용할 수 있게 됩니다. 관심분야 그룹에 보고 ID가 두 개 이상 정의된 경우 buyerAndSellerReportingId가 buyerReportingId를 덮어쓰는 덮어쓰기 규칙이 적용됩니다.
buyerAndSellerReportingId와buyerReportingId가 모두 정의된 경우buyerAndSellerReportingId가buyerReportingId를 덮어쓰고buyerAndSellerReportingId는reportWin()내에서 사용할 수 있습니다.buyerReportingId만 정의된 경우buyerReportingId를 사용할 수 있습니다.buyerAndSellerReportingId도buyerReportingId도 정의되지 않으면interestGroupName을 사용할 수 있습니다.
function reportWin(..., browserSignals, ...) {
const {
buyerAndSellerReportingId // 'bsrid123'
} = browserSignals;
sendReportTo(`https://seller.example/report?bsrid=${buyerAndSellerReportingId}`);
}
reportWin() 내에서 사용할 수 있게 되는 보고 ID는 관심분류 소유자, 입찰 스크립트 URL, 렌더링 URL, 광고 크기 (광고 크기는 2025년 1분기까지 이 검사에서 제외됨)와 함께 k-익명성이 있는지 확인됩니다. k-익명성 검사에 실패하면 reportWin()은 계속 실행되지만 보고 ID 값을 함수 내에서 사용할 수 없습니다.
buyerReportingId만 정의됨
관심분야 그룹 구성에 buyerReportingId만 정의된 경우:
navigator.joinAdInterestGroup({
owner: 'https://buyer.example',
name: 'example-interest-group',
ads: [{
renderUrl: `https://buyer.example/ad.html`,
buyerReportingId: 'brid123',
}]
});
그러면 buyerReportingId를 reportWin() 내에서 사용할 수 있습니다.
function reportWin(..., browserSignals, ...) {
const {
buyerReportingId, // 'brid123'
} = browserSignals;
}
reportWin()에서 사용할 수 있게 되기 전에 buyerReportingId의 k-익명성이 관심분야 그룹 소유자, 입찰 스크립트 URL, 렌더링 URL, 광고 크기 (광고 크기는 2025년 1분기까지 이 검사에서 제외됨)와 함께 확인됩니다.
buyerAndSellerReportingId만 정의됨
관심분야 그룹 구성에 buyerAndSellerReportingId만 정의된 경우:
navigator.joinAdInterestGroup({
owner: 'https://buyer.example',
name: 'example-interest-group',
ads: [{
renderUrl: `https://buyer.example/ad.html`,
buyerAndSellerReportingId: 'bsrid123',
}]
});
그러면 buyerAndSellerReportingId를 reportWin() 내에서 사용할 수 있습니다.
function reportWin(..., browserSignals, ...) {
const {
buyerAndSellerReportingId, // 'bsrid123'
} = browserSignals;
}
reportWin()에서 사용할 수 있게 되기 전에 buyerAndSellerReportingId의 k-익명성이 관심분야 그룹 소유자, 입찰 스크립트 URL, 렌더링 URL, 광고 크기 (광고 크기는 2025년 1분기까지 이 검사에서 제외됨)와 함께 확인됩니다.
buyerAndSellerReportingId 및 buyerReportingId 모두 정의됨
관심분야 그룹 구성에 buyerAndSellerReportingId와 buyerReportingId가 모두 정의된 경우:
navigator.joinAdInterestGroup({
owner: 'https://buyer.example',
name: 'example-interest-group',
ads: [{
renderUrl: `https://buyer.example/ad.html`,
buyerReportingId: 'brid123',
buyerAndSellerReportingId: 'bsrid123',
}]
});
그러면 덮어쓰기 동작으로 인해 buyerAndSellerReportingId만 reportWin() 내에서 사용할 수 있습니다.
function reportWin(..., browserSignals, ...) {
const {
buyerAndSellerReportingId, // 'bsrid123'
} = browserSignals;
}
reportWin()에서 사용할 수 있게 되기 전에 buyerAndSellerReportingId의 k-익명성이 관심분야 그룹 소유자, 입찰 스크립트 URL, 렌더링 URL, 광고 크기 (광고 크기는 2025년 1분기까지 이 검사에서 제외됨)와 함께 확인됩니다.
buyerAndSellerReportingId 또는 buyerReportingId가 정의되지 않음
관심분야 그룹 구성에 보고 ID가 정의되어 있지 않은 경우:
navigator.joinAdInterestGroup({
owner: 'https://buyer.example',
name: 'example-interest-group',
ads: [{
renderUrl: `https://buyer.example/ad.html`,
}]
});
그러면 관심분야 그룹 name를 reportWin() 내에서 사용할 수 있습니다.
function reportWin(..., browserSignals, ...) {
const {
interestGroupName, // 'example-interest-group'
} = browserSignals;
}
reportWin()에서 사용할 수 있게 되기 전에 관심분류 이름 (interestGroupName)이 관심분류 소유자, 입찰 스크립트 URL, 렌더링 URL, 광고 크기 (광고 크기는 2025년 1분기까지 이 검사에서 제외됨)와 함께 k-익명성 검사를 거칩니다.
선택 가능한 보고 ID
선택 가능한 보고 ID를 사용하면 구매자가 입찰 생성 중에 ID를 선택할 수 있으며 브라우저가 선택한 값을 scoreAd() 및 보고 함수에 제공합니다. 문자열 배열인 selectableBuyerAndSellerReportingIds 값이 generateBid()에 제공되며 구매자는 선택한 ID를 selectedBuyerAndSellerReportingId로 반환할 수 있습니다.
generateBid() 및 scoreAd() 함수는 관심분야 그룹 구성에 정의된 각 광고에 대해 실행되며 각 광고의 보고 ID를 수신합니다. 구매자 및 판매자 보고 기능은 낙찰된 광고에 대해서만 실행되며, 이 기능은 낙찰된 광고에 대해 정의된 보고 ID를 수신합니다.
선택 불가능한 보고 ID를 선택 가능한 보고 ID와 함께 사용하면 이전 섹션에 설명된 워크플로와 동작이 달라집니다. 선택 불가능한 보고 ID가 보고 기능 내에서만 제공되는 초기 동작과 달리 선택 가능한 보고 ID를 사용하면 선택 불가능한 보고 ID가 generateBid() 및 scoreAd() 내에서도 제공됩니다.
관심분야 그룹
선택 가능한 보고 ID 필드(selectableBuyerAndSellerReportingIds)는 광고의 관심분야 그룹에서 구매자가 정의한 문자열 배열입니다. 선택할 수 없는 보고 ID도 선택할 수 있는 보고 ID와 함께 정의할 수 있습니다.
navigator.joinAdInterestGroup({
owner: 'https://buyer.example',
name: 'example-interest-group',
ads: [{
renderUrl: `https://buyer.example/ad.html`,
buyerReportingId: 'brid123',
buyerAndSellerReportingId: 'bsrid123',
selectableBuyerAndSellerReportingIds: ['sbsrid1', 'sbsrid2', 'sbsrid3']
}]
});
구매자 입찰가 생성
selectableBuyerAndSellerReportingIds가 관심분야 그룹 구성에 정의된 경우 정의된 다른 보고 ID와 함께 generateBid() 내에서 사용할 수 있게 됩니다.
function generateBid(interestGroup, ...) {
const [{
buyerReportingId, // 'brid123'
buyerAndSellerReportingId, // 'bsrid123'
selectableBuyerAndSellerReportingIds // ['sbsrid1', 'sbsrid2', 'sbsrid3']
}] = interestGroup.ads;
return {
bid: 1,
render: 'https://buyer.example/ad.html',
selectedBuyerAndSellerReportingId: 'sbsrid2' // Buyer returns the selected ID
};
}
구매자는 generateBid()의 selectableBuyerAndSellerReportingIds 배열에서 ID 중 하나를 선택하고 선택한 ID를 selectedBuyerAndSellerReportingId로 반환할 수 있습니다. 선택한 값이 selectableBuyerAndSellerReportingIds 배열에 없으면 입찰이 거부됩니다. selectableBuyerAndSellerReportingIds가 관심분야 그룹 구성에 정의되어 있고 구매자가 generateBid()에서 selectedBuyerAndSellerReportingId를 반환하지 않으면 보고 ID가 선택할 수 없는 보고 ID에 설명된 동작으로 되돌아갑니다.
selectedbuyerAndSellerReportingId 값이 반환된 입찰은 selectedbuyerAndSellerReportingId 값이 buyerAndSellerReportingId (있는 경우), buyerReportingId (있는 경우), 관심분류 소유자, 입찰 스크립트 URL, 렌더링 URL, 광고 크기와 함께 공동으로 k-익명인 경우에만 낙찰될 수 있습니다 (광고 크기는 2025년 1분기까지 이 검사에서 제외됨).
판매자 광고 점수
판매자의 경우 구매자가 generateBid()에서 반환한 selectedBuyerAndSellerReportingId이 scoreAd()에서 제공되며, 관심분야 그룹 구성에 정의된 경우 buyerAndSellerReportingId도 제공됩니다.
function scoreAd(..., browserSignals, ...) {
const {
buyerAndSellerReportingId, // 'bsrid123'
selectedBuyerAndSellerReportingId, // 'sbsrid2'
} = browserSignals;
// ...
}
판매자 보고
판매자 보고의 경우 구매자가 generateBid()에서 반환한 selectedBuyerAndSellerReportingId는 관심분야 그룹에 정의된 경우 buyerAndSellerReportingId와 함께 reportResult()에서 사용할 수 있습니다.
function reportResult(..., browserSignals, ...) {
const {
buyerAndSellerReportingId, // 'bsrid123'
selectedBuyerAndSellerReportingId // 'sbsrid2'
} = browserSignals;
// ...
}
selectableBuyerAndSellerReportingIds이 관심분야 그룹 구성에 정의되어 있고 selectedBuyerAndSellerReportingId이 generateBid()에서 반환된 경우 selectedBuyerAndSellerReportingId 및 buyerAndSellerReportingId (있는 경우)이 관심분야 그룹 소유자, 입찰 스크립트 URL, 렌더링 URL, 광고 크기 (광고 크기는 2025년 1분기까지 이 검사에서 제외됨)와 k-익명성이 없으면 입찰에서 낙찰될 수 없으며 해당 입찰에 대해 reportResult()이 실행되지 않습니다. 따라서 reportResult()이 selectedBuyerAndSellerReportingId 값을 사용하여 호출되면 보고 ID가 k-익명성 검사를 통과했다는 의미이며 정의된 모든 보고 ID를 reportResult() 내에서 사용할 수 있습니다.
구매자 보고
selectableBuyerAndSellerReportingIds이 관심분야 그룹 구성에 정의되고 selectedBuyerAndSellerReportingId이 generateBid()에서 반환되면 관심분야 그룹 구성에 정의된 모든 보고 ID를 사용할 수 있습니다. 판매자 보고와 마찬가지로 보고 ID가 k-익명성이 아니면 입찰에서 낙찰될 수 없으며 해당 입찰에 대해 reportWin()가 실행되지 않습니다.
function reportWin(..., browserSignals, ...) {
const {
buyerReportingId, // 'brid123'
buyerAndSellerReportingId, // 'bsrid123'
selectedBuyerAndSellerReportingId // 'sbsrid2'
} = browserSignals;
// ...
}
덮어쓰기 규칙
여기에서는 선택할 수 없는 보고 ID와 선택할 수 있는 보고 ID의 덮어쓰기 규칙을 요약합니다. selectableBuyerAndSellerReportingIds, buyerAndSellerReportingId, buyerReportingId, 관심분야 그룹 이름 중 reportWin()에 전달되는 항목은 다음 논리에 따라 브라우저에서 결정됩니다.
- 입찰에서
selectedBuyerAndSellerReportingId이 반환되면selectedBuyerAndSellerReportingId,buyerAndSellerReportingId(관심분야 그룹에 정의된 경우),buyerReportingId(관심분야 그룹에 정의된 경우)을 모두 보고할 수 있습니다. - 그렇지 않고
buyerAndSellerReportingId이 관심분야 그룹에 정의되어 있으면buyerAndSellerReportingId만 보고에 사용할 수 있습니다. - 그렇지 않고
buyerReportingId이 관심분야 그룹에 정의되어 있으면buyerReportingId만 보고에 사용할 수 있습니다. - 그렇지 않으면 관심분야 그룹
name만 보고에 사용할 수 있습니다.
다음 표에서는 덮어쓰기 동작을 설명합니다.
| 관심분야 그룹 구성에 보고 ID가 정의되어 있나요? | 보고 ID 사용 가능 | |||
selectableBuyerAnd
|
buyerAndSeller
|
buyerReportingId
|
reportWin()
|
reportResult()
|
예, generateBid()에서 를 선택함 |
선택사항 | 선택사항 |
1) selectedBuyerAnd2) buyerAndSeller (정의된 경우)3) buyerReportingId (정의된 경우)
|
1) selectedBuyerAnd2) buyerAndSeller (정의된 경우) |
아니요 또는 generateBid()에서 을 선택하지 않음 |
예 | 무시됨 | buyerAndSeller |
buyerAndSeller |
아니요 또는 generateBid()에서 을 선택하지 않음 |
아니요 | 예 | buyerReportingId |
없음 |
아니요 또는 generateBid()에서 을 선택하지 않음 |
아니요 | 아니요 | interestGroupName |
없음 |
참여 및 의견 공유
- 보고 ID에 대해 자세히 알아보려면 Protected Audience 설명의 보고 ID 섹션을 참고하세요.
- GitHub: API 저장소에서 문제에 질문을 게시하고 토론을 살펴보세요.
- W3C: WICG 통화에서 업계 사용 사례를 논의합니다.
- 공지사항: 메일링 리스트에 가입하거나 확인합니다.
- 개인 정보 보호 샌드박스 개발자 지원: 개인 정보 보호 샌드박스 개발자 지원 저장소에서 질문하고 토론에 참여하세요.
- Chromium: Chromium 버그를 신고하여 Chrome에서 테스트할 수 있는 구현에 관해 질문합니다.