A 911 dispatch system streams call records through Amazon Kinesis before they land in a data lake for downstream ML use. Caller phone numbers and home addresses must be masked before any raw record is persisted. Which approach applies the masking at the right point in the pipeline?
Select an answer to reveal the explanation.
Short Explanation
Think of blacking out a sensitive line before a document ever gets filed, instead of filing it wide open and redacting it later. Masking inline on the stream closes that window before the record ever touches storage.
Full Explanation
Mechanism: attaching a Lambda function to the Kinesis stream lets masking happen inline as each record is processed, so sensitive phone numbers and addresses are transformed before the record is ever persisted to the data lake, closing the window during which unmasked data could sit at rest or be accessed by other consumers of that storage. Why the wrong options fail by concept: storing raw records unmasked and masking them in a nightly batch job leaves a persistence window where unmasked sensitive data sits in storage, exactly what the requirement is trying to prevent, the masking simply happens too late in the pipeline. Deferring masking to the SageMaker training script only protects that one downstream consumer, every other process or person with access to the raw data-lake records still sees the unmasked phone numbers and addresses. Masking only the dashboard copy while leaving the data-lake copy unmasked protects one downstream view while leaving the underlying persisted data, the actual asset at risk, fully exposed. Scope caveat: streaming-stage masking must cover every field defined as sensitive consistently, a masking rule that misses a variant field name or format lets that data pass through unmasked. Operational check: sample records directly from the data-lake storage location after ingestion and confirm phone numbers and addresses appear masked there, not just in downstream views or dashboards.