본 번역은 검증되지 않았습니다. AIP를 통해 영문원문으로부터 번역되었습니다.

데이터셋 열에 Cipher 작업 적용

Cipher는 데이터셋의 전체 열을 암호화, 복호화 및 해시할 수 있게 합니다. 이는 Pipeline Builder, Contour, 및 Python 변환에서 지원됩니다.

Code Repositories에서 미리보기 또는 Pipeline Builder에서 미리보기를 사용할 때, 사용자는 Cipher 작업의 실제 결과물을 볼 수 없습니다. 대신, 미리보기에서는 플레이스홀더 값을 보게 됩니다. 데이터는 빌드 시점에 암호화된다는 점을 유의해야 합니다. Cipher 작업의 실제 결과물을 보려면 빌드를 실행해야 합니다.

Pipeline Builder

Pipeline Builder는 Foundry에서 고품질 데이터 통합을 쉽게 수행할 수 있도록 하는 데이터 통합 애플리케이션입니다. 이 섹션에서는 Pipeline Builder에서 데이터셋의 열을 난독화하기 위해 Cipher 작업을 배포하는 방법을 설명합니다. Pipeline Builder에서 Cipher 작업을 실행하려면, 사용자는 Cipher Data Manager License 또는 Admin License에 대한 접근 권한이 필요합니다.

암호화

먼저, Cipher 암호화 변환을 선택합니다. 그런 다음, 표현식(암호화할 열)을 선택합니다. 다음으로, 프로젝트 폴더에서 이전에 발행된 Cipher 애플리케이션에서 암호화 권한이 있는 Data Manager License를 선택합니다. 마지막으로, 결과물 열의 이름을 지정합니다.

Pipeline Builder Cipher Encrypt

복호화

먼저, Cipher 복호화 변환을 선택합니다. 표현식을 선택할 때, 이미 Cipher 변환을 통해 암호화된 열을 지정합니다. Cipher License RID의 경우, Cipher 애플리케이션에서 이전에 발행된 프로젝트 폴더에서 복호화 권한이 있는 Data Manager License를 선택합니다. License는 관련 열을 암호화하는 데 사용된 동일한 Cipher Channel의 일부여야 합니다. 마지막으로, 결과물 열의 이름을 지정합니다.

Pipeline Builder Cipher Decrypt

해싱

Cipher 해시 변환을 선택합니다. 표현식의 경우, 해시할 열을 지정합니다. 다음으로, 해시 Cipher Channel에서 암호화 권한이 있는 Data Manager License를 선택합니다. License는 Cipher 애플리케이션에서 발행된 후 프로젝트 폴더에 저장됩니다. 마지막으로, 결과물 열의 이름을 지정합니다.

Pipeline Builder Cipher Hash

Cipher로 파이프라인 암호화 방법 (Admin 및 Data Manager Licenses만 해당)

먼저, 암호화 권한이 있는 Cipher License를 엽니다. 라이선스는 일반적으로 Cipher 애플리케이션에서 이전에 발행된 후 프로젝트 폴더에서 찾을 수 있습니다. 그런 다음, 오른쪽 상단의 'Create Pipeline'을 선택합니다.

Pipeline Builder Cipher License view

암호화할 입력 데이터셋을 선택한 다음, 파이프라인이 저장될 대상 폴더와 암호화할 데이터셋 열을 선택합니다. 스트링 열만 암호화 가능하다는 점을 유의하세요. 다른 열을 암호화해야 하는 경우, 먼저 스트링으로 변환하세요. Create Pipeline을 선택하면, Cipher가 자동으로 새 파이프라인을 생성하고 이전에 선택한 열을 암호화합니다.

Pipeline Builder Create Pipeline

Contour

Contour는 대규모 테이블에서 데이터 분석을 수행할 수 있는 포인트 앤 클릭 사용자 인터페이스를 제공합니다. 이 섹션에서는 Contour 분석에서 데이터셋 열을 (비)난독화하기 위해 Cipher 작업을 사용하는 방법을 설명합니다. Contour에서 Cipher 작업을 실행하려면, 사용자는 Cipher Data Manager License 또는 Admin License에 대한 접근 권한이 필요합니다. 시작하려면, Contour 도구 모음 검색 모드를 사용하여 분석에 Cipher 보드를 추가합니다.

Contour의 테이블 보드테이블 패널은 Cipher 작업의 결과를 확인하는 데 사용할 수 있습니다.

Cipher 보드를 사용하는 Contour 분석 경로는 데이터셋으로 저장할 수 없습니다.

암호화

Cipher 보드를 사용하여 데이터를 암호화하려면, 먼저 암호화할 열을 선택합니다 (열이 선택되는 순서는 작업에 영향을 미치지 않습니다). 다음으로, 프로젝트 폴더에서 이전에 발행된 Cipher 애플리케이션에서 암호화 권한이 있는 Data Manager License 또는 Admin License를 선택합니다. Encrypt 작업을 선택하고 보드를 저장합니다. 열 값은 이 변환에 의해 업데이트되지만, 열 이름은 수정되지 않습니다.

Contour board Cipher Encrypt

복호화

Cipher 보드를 사용하여 데이터를 복호화하려면, 먼저 복호화할 열을 선택합니다 (열이 선택되는 순서는 작업에 영향을 미치지 않습니다). 다음으로, 프로젝트 폴더에서 이전에 발행된 Cipher 애플리케이션에서 복호화 권한이 있는 Data Manager License 또는 Admin License를 선택합니다. Decrypt 작업을 선택하고 보드를 저장합니다. 열 값은 이 변환에 의해 업데이트되지만, 열 이름은 수정되지 않습니다.

Contour board Cipher Decrypt

해싱

Cipher 보드를 사용하여 데이터를 해싱하려면, 먼저 해싱할 열을 선택합니다 (열이 선택되는 순서는 작업에 영향을 미치지 않습니다). 다음으로, 프로젝트 폴더에서 이전에 발행된 Cipher 애플리케이션에서 해싱 권한이 있는 Data Manager License 또는 Admin License를 선택합니다. Hash 작업을 선택하고 보드를 저장합니다. 열 값은 이 변환에 의해 업데이트되지만, 열 이름은 수정되지 않습니다.

Contour board Cipher Hashing

Python 변환

리포지토리 설정

conda_recipe/meta.ymlrequirements.run 블록에 bellaso-python-lib를 추가합니다. Code Repository 환경Libraries 패널에 추가하여 자동으로 수행할 수도 있습니다. Transforms에서 Cipher 작업을 수행하려면 Admin License가 필요합니다.

암호화

열을 암호화하려면, @transforms 블록에서 EncrypterInput을 정의해야 합니다. EncrypterInput은 Cipher License의 RID 또는 파일 시스템 경로를 받습니다. Cipher License는 암호화 권한이 있어야 합니다.

예시:

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 from transforms.api import transform, Input, Output from pyspark.sql.functions import col from bellaso_python_lib.encryption.encrypter_input import EncrypterInput @transform( encrypter=EncrypterInput("/path/to/cipher/license"), output=Output("/path/to/output/dataset"), input_dataset=Input("/path/to/input/dataset") ) def encrypt_column(ctx, input_dataset, output, encrypter): encrypted_df = input_dataset.dataframe().withColumn("your_column_name", encrypter.dataframe().encrypt(col("your_column_name"), ctx)) output.write_dataframe(encrypted_df)

복호화

열을 복호화하려면, @transforms 블록에서 DecrypterInput을 정의해야 합니다. DecrypterInput은 Cipher License의 RID 또는 파일 시스템 경로를 받습니다. Cipher License는 복호화 권한이 있어야 합니다.

예시:

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 from transforms.api import transform, Input, Output from pyspark.sql.functions import col from bellaso_python_lib.decryption.decrypter_input import DecrypterInput @transform( decrypter=DecrypterInput("/path/to/cipher/license"), output=Output("/path/to/output/dataset"), input_dataset=Input("/path/to/input/dataset") ) def decrypt_column(ctx, input_dataset, output, decrypter): decrypted_df = input_dataset.dataframe().withColumn("your_column_name", decrypter.dataframe().decrypt(col("your_column_name"), ctx)) output.write_dataframe(decrypted_df)

해싱

열을 해싱하려면, @transforms 블록에서 HasherInput을 정의해야 합니다. HasherInput은 Cipher License의 RID 또는 파일 시스템 경로를 받습니다. Cipher License는 해싱 권한이 있어야 합니다.

예시:

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 from transforms.api import transform, Input, Output from pyspark.sql.functions import col from bellaso_python_lib.encryption.hasher_input import HasherInput @transform( hasher=HasherInput("/path/to/cipher/license"), output=Output("/path/to/output/dataset"), input_dataset=Input("/path/to/input/dataset") ) def hash_column(ctx, input_dataset, output, hasher): hashed_df = input_dataset.dataframe().withColumn("your_column_name", hasher.dataframe().hash(col("your_column_name"), ctx)) output.write_dataframe(hashed_df)

데이터를 수집할 때 암호화하거나 해싱하려면, Cipher의 Python 라이브러리와 외부 변환을 사용할 수 있습니다.

시각적 난독화

열을 해싱하려면, @transforms 블록에서 EncrypterInput을 정의해야 합니다. EncrypterInput은 Cipher License의 RID 또는 파일 시스템 경로를 받습니다. Cipher License는 암호화 권한이 있어야 합니다.

예시:

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 from transforms.mediasets import MediaSetInput, MediaSetOutput import io from bellaso_python_lib.encryption.encrypter_input import EncrypterInput from bellaso_python_lib.types import Coordinate @transform( mediaset_in=MediaSetInput("</path/to/input/media/set"), mediaset_out=MediaSetOutput("</path/to/output/media/set"), encrypter=EncrypterInput("/path/to/cipher/license"), polygons=Input("/path/to/polygon/dataset"), ) def compute(mediaset_in, mediaset_out, encrypter, polygons, ctx,): media_references = mediaset_in.list_media_items_by_path_with_media_reference( ctx ).collect() # noqa for row in media_references: image_file = mediaset_in.get_media_item(row["mediaItemRid"]) plainview_image = image_file.read() # 이미지의 왼쪽 상단에 100 px x 100 px 크기의 사각형을 암호화합니다. polygon = [Coordinate({"x": 0, "y": 0}), Coordinate({"x": 100, "y": 0}), Coordinate({"x": 100, "y": 100}), Coordinate({"x": 0, "y": 100})] polygon_list = [polygon] if plainview_image: encrypted_image = encrypter.encrypt_image(plainview_image, polygon_list, ctx) mediaset_out.put_media_item(io.BytesIO(encrypted_image), row["path"])