Personium을 사용하여 개인 데이터의 사용 허가 요청, 동의, 접근 제어를 진행하다
다른 시스템이나 서비스에서 개인 데이터를 사용할 때 기본적으로 데이터 소유자의 동의를 얻어야 한다.예를 들어 웹 서비스를 시작할 때 프라이버시 정책에 동의하라는 요청을 받고 해외 홈페이지를 보면 쿠키의 사용 허가를 받는 일은 누구나 자주 체험할 수 있을 거라고 생각합니다.
오픈소스인 페르소나르 데이터 스토어(PDS)인 페르소나움은 소유자 이외의 사람과 조직이 이런 개인데이터를 사용할 경우 사용허가 요구, 동의, 액세스 제어 기능을 구상해 이를 하려는 스마트폰 앱과 웹 앱에 편입할 수 있다.
그러나 현재 공식 문서에서는 어떤 API에서 어떻게 해야 할지 잘 모르는 부분이 있다.따라서 본고는 Personium 기능을 사용하여 사용 허가의 요청, 동의, 접근 제어를 하는 방법을 소개할 것이다.
원래는 공식 문서에서 좋은 내용이기 때문에 잘 정리되면 OSS 커뮤니티에서 편집하고 싶어요.
Personium이란 무엇입니까?
Personium은 오픈 소스 Personal Data Store(PDS)입니다.PDS는 지금까지 서비스와 시스템 단위로 분산 저장·처리된 개인 데이터를 한 명 단위로 집중적으로 저장하는 데이터 저장소를 말한다.이런 데이터를 저장해 개인 관리 하에 두고 개인에게 복원할 수 있는 데이터를 유통·활용하는 것을 목표로 한다.
위 참조공식 사이트의 이미지
Personium의 데이터 작업을 포함한 모든 기능은 REST API를 통해 수행됩니다.
상세한 상황은 아래의 공식 사이트와 이미 발표된 자료를 참조하시오.
본 보도의 구상
우선 페르소나움의 API 사용법을 설명할 때 쉽게 연상되는 간단한 예를 생각해보자.먼저 정말 현실적이라고 말하지 말고 아래의 예를 고려해 보자.
여기 있다
또 이곳은 앨리스를 개인으로 만들었지만 병원 등 조직으로 교체할 수도 있다.
자신의 데이터에 액세스
다른 사람의 데이터 접근에 들어가기 전에 페르소니움의 기본으로서 자신의 데이터에 접근하는 것을 고려한다.
Personium에서 개인 데이터가 포함된 영역은 셀이라고 불리며 유일한 URL이 배정된다.예를 들어, Alice 및 Bob의 Cell은 다음 URL로 표시됩니다.
https://alice.pds.example/ https://bob.pds.example/ https://alice.pds.example/__token를 통해 액세스 토큰을 획득하고 해당 데이터https://alice.pds.example/mybox/mydata에 액세스 토큰을 제공합니다.USERNAME=me
PASSWORD=****
# アクセストークンの取得
ACCESS_TOKEN=$(curl -X POST \
-d "grant_type=password&username=${USERNAME}&password=${PASSWORD}" \
https://alice.pds.example/__token | jq -r .access_token)
# Alice自身のデータへのアクセス
curl -X GET \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
https://alice.pds.example/mybox/mydata.file
타인의 데이터에 접근할 때의 접근 제어 설정허가 요청을 사용하기 전에 동의한 접근 제어 설정을 고려합니다.
Alice가 Bob에 액세스할 때다른 사람의 셀 데이터 액세스 다음 설정은 Bob Cell에서 미리 작성해야 합니다.
USERNAME=me
PASSWORD=****
# アクセストークンの取得
ACCESS_TOKEN=$(curl -X POST \
-d "grant_type=password&username=${USERNAME}&password=${PASSWORD}" \
https://bob.pds.example/__token | jq -r .access_token)
# 'Doctor' Roleの作成
curl -X POST \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H 'Content-Type: application/json' \
-d '{"Name":"Doctor"}' \
https://bob.pds.example/__ctl/Role
# ExtCell作成でAlice Cellを指定
curl -X POST \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H 'Content-Type: application/json' \
-d '{"Url":"https://alice.pds.example/"}' \
https://bob.pds.example/__ctl/ExtCell
# 上記ExtCellと'Doctor' Roleのリンクの作成
BODY=$(cat << EOS
{
"uri": "https://bob.pds.example/__ctl/Role(Name='Doctor')"
}
EOS
)
curl -X POST \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H 'Content-Type: application/json' \
-d "${BODY}" \
"https://bob.pds.example/__ctl/ExtCell('https%3A%2F%2Falice.pds.example%2F')/\$links/_Role"
위에서 설명한 대로 Alice가 Bob Cell의 데이터에 액세스하면 Doctor'Role로 액세스합니다.이 설정은 동의 전에 진행되지 않았고 동의 후에 진행되어 예상한 접근 제어를 할 수 있다.데이터 사용 허가 요구 사항
Alice에서 데이터 사용 허가 요청에 메시지 전송 API을 사용합니다.
그러나 이 API가 호출되기 전에'Doctor'Role'을 정의한 응용 프로그램bar 파일을 사용해야 한다. Bob의 Cell에서Box 설치.Bar 파일/Box 설치에 대해서는 링크된 대상 문서를 참조하십시오.
이메일 발송 API에는 Type 유형 2가지가 있는데, Type="request"를 지정하면 동의하는 계기에 상대방의 Role에게 지정할 수 있다.
# Bob Cellで事前に'Doctor' Roleが定義されたアプリのbarファイルをBoxインストールしておく
# アクセストークンはアプリのスキーマ認証したものを使用する (OAuth 2.0 認可コードフローを使って取得する)
# データの使用許諾リクエストの作成
BODY=$(cat << EOS
{
"BoxBound": true,
"To": "https://bob.pds.example/",
"Type": "request",
"Title": "医療データの使用許諾",
"Body": "診療のため、医療データを参照しますがよろしいでしょうか。",
"RequestObjects": [
{
"RequestType": "role.add",
"Name": "Doctor",
"TargetUrl": "https://alice.pds.example/"
}
]
}
EOS
)
curl -X POST \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H 'Content-Type: application/json' \
-d "${BODY}" \
https://alice.pds.example/__message/send | jq .
데이터 사용 동의사용메시지 상태 변경 API은 Bob의 데이터 사용에 동의합니다.
# データ使用許諾の同意
MESSAGE_ID='4ee33143dffc4f49a3fe39096fa476f8'
curl -X POST \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H 'Content-Type: application/json' \
-d '{"Command": "approved"}' \
https://bob.pds.example/__message/received/${MESSAGE_ID}
이렇게 하면 Bob Cell에서 ExtCell에서 Alice Cell을 작성하여 Doctor'Role에 연결합니다.동의한 타인의 데이터 액세스
동의 후 Alice가 Bob 데이터에 액세스한 경우다른 사람의 셀 데이터 액세스는 다음과 같습니다.
# トランスセルトークンの取得 (p_targetパラメータを追加)
ACCESS_TOKEN=$(curl -X POST \
-d "grant_type=password&username=${USERNAME}&password=${PASSWORD}&p_target=https://bob.pds.example/" \
https://alice.pds.example/__token | jq -r .access_token)
# Bobのデータへのアクセス
curl -X GET \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
https://bob.pds.example/demo/helth-data.file
이 Bob 데이터https://bob.pds.example/demo/helth-data.file는 Alice에서 "Doctor'Role"로 액세스됩니다.ACL에서 이 데이터를 라이센스로 설정하면 Doctor'Role에 액세스할 수 있습니다.Alice에서 Doctor'Role을 부여하지 않았기 때문에 라이센스 사용 요청에 동의할 때까지 이 데이터에 액세스할 수 없습니다.끝말
본고에서 소개한 바와 같이Personium의 API를 사용하면 응용 프로그램에 개인 데이터의 사용 허가 요청, 동의, 접근 제어를 추가할 수 있다.
아마 페르소나움의 API가 독특하다고 생각하실 거예요.이 같은 구조는 비중앙 집권에서 상호 운용할 수도 있고 PDS를 타깃으로 제작할 수도 있다.이 점을 나도 계속 쓰고 싶다.
Reference
이 문제에 관하여(Personium을 사용하여 개인 데이터의 사용 허가 요청, 동의, 접근 제어를 진행하다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tochi_ondy/items/fc3e8bebc299e781e94b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)