soracom cli에서 자격 증명 조작 (beam)
이것은
SORACOM Advent Calendar 2019 의 20일째의 기사입니다.
soracom beam에서 변조되지 않았는지 확인하기 위한 유효성 검사 시그니처를 지정하는 경우 시그니처를 계산하기 위한 사전 공유 키를 설정해야 합니다. 그것을 cli에서 갔을 때의 메모입니다.
덧붙여 이번 cli의 셋업에 대해서는 할애합니다. 공식 문서을 참조하여 설정하십시오.
soracom beam 설정
먼저 soracom beam에서 서명 헤더를 추가하도록 설정해 봅시다. 공식 문서 "그룹 구성 세부 정보"(Namespace : SoracomBeam) 에 따라 다음과 같은 JSON을 beam-setup.json이라는 파일에 저장합니다.
[
{
"key":"http://beam.soracom.io:8888/",
"value": {
"enabled": true,
"name": "HTTP",
"addEquipmentHeader": false,
"addDeviceIdHeader": true,
"addSignature": true,
"addSubscriberHeader": false,
"psk": "himitu",
"customHeaders": {},
"destination": "https://******************",
"skipStatusCode": false,
"useClientCert": false,
"useClientCredentials": false
}
}
]
PSK에 서명을 위한 사전 공유 패스프레이즈(himitu)를 설정합니다.
그리고 cli에서이 설정을 보냅니다.
$ soracom groups put-config --group-id "*************" --namespace SoracomBeam --body @beam-setup.json
{
"configuration": {
"SoracomBeam": {
"http://beam.soracom.io:8888/": {
"addDeviceIdHeader": true,
"addEquipmentHeader": false,
"addSignature": true,
"addSubscriberHeader": false,
"customHeaders": {},
"destination": "https://***********************",
"enabled": true,
"name": "HTTP",
"psk": "himitu",
"skipStatusCode": false,
"useClientCert": false,
"useClientCredentials": false
}
},
"createdAt": **************,
"createdTime": ****************,
"groupId": "*********************",
"lastModifiedAt": ***************,
"lastModifiedTime": ***************,
"operatorId": "***************",
"tags": {
"name": "*********************"
}
}
안전하게 설정할 수있었습니다.
plain text는 좋지 않습니다 · ·
그런데, 모처럼이므로 WEB 콘솔에서도 설정 상황을 확인해 봅시다.
무사히 설정할 수 있습니다만, 사전 공유 키의 설정의 곳에 「비추천」이라고 나오네요. 아무튼 비밀의 공유키가 plain text로 들어가 다다누설 상태이므로 비추천인 것은 잘 알 수 있습니다. 콘솔에서도 「인증 정보 스토어를 사용할 수 있다」라고 쓰고 있네요.
그건 그렇고, soracom의 기능 구현 정책은
먼저 soracom beam에서 서명 헤더를 추가하도록 설정해 봅시다. 공식 문서 "그룹 구성 세부 정보"(Namespace : SoracomBeam) 에 따라 다음과 같은 JSON을 beam-setup.json이라는 파일에 저장합니다.
[
{
"key":"http://beam.soracom.io:8888/",
"value": {
"enabled": true,
"name": "HTTP",
"addEquipmentHeader": false,
"addDeviceIdHeader": true,
"addSignature": true,
"addSubscriberHeader": false,
"psk": "himitu",
"customHeaders": {},
"destination": "https://******************",
"skipStatusCode": false,
"useClientCert": false,
"useClientCredentials": false
}
}
]
PSK에 서명을 위한 사전 공유 패스프레이즈(himitu)를 설정합니다.
그리고 cli에서이 설정을 보냅니다.
$ soracom groups put-config --group-id "*************" --namespace SoracomBeam --body @beam-setup.json
{
"configuration": {
"SoracomBeam": {
"http://beam.soracom.io:8888/": {
"addDeviceIdHeader": true,
"addEquipmentHeader": false,
"addSignature": true,
"addSubscriberHeader": false,
"customHeaders": {},
"destination": "https://***********************",
"enabled": true,
"name": "HTTP",
"psk": "himitu",
"skipStatusCode": false,
"useClientCert": false,
"useClientCredentials": false
}
},
"createdAt": **************,
"createdTime": ****************,
"groupId": "*********************",
"lastModifiedAt": ***************,
"lastModifiedTime": ***************,
"operatorId": "***************",
"tags": {
"name": "*********************"
}
}
안전하게 설정할 수있었습니다.
plain text는 좋지 않습니다 · ·
그런데, 모처럼이므로 WEB 콘솔에서도 설정 상황을 확인해 봅시다.
무사히 설정할 수 있습니다만, 사전 공유 키의 설정의 곳에 「비추천」이라고 나오네요. 아무튼 비밀의 공유키가 plain text로 들어가 다다누설 상태이므로 비추천인 것은 잘 알 수 있습니다. 콘솔에서도 「인증 정보 스토어를 사용할 수 있다」라고 쓰고 있네요.
그건 그렇고, soracom의 기능 구현 정책은
그렇게 진행되고 있다고 듣습니다.
그렇다면 WEB 콘솔에서 할 수 있는 「인증 정보 스토어를 참조해 설정한다」라고 하는 조작은 반드시 cli에서도 할 수 있을 것입니다. 실제로 해보자.
자격 증명 설정
우선 자격 증명을 설정합니다. 다음 내용을 psk-credentials.json에 저장합니다.
{
"type": "psk",
"credentials": {
"key": "himitu"
},
"description": "test psk"
}
이것을 cli에서 보냅니다.
$soracom credentials create --credentials-id test-psk --body @psk-credentials.json
{
"createDateTime": ***********,
"credentials": {},
"credentialsId": "test-psk",
"description": "test psk",
"type": "psk",
"updateDateTime": *******
}
이전과 같은 공유 키로 "test-psk"라는 ID의 credential을 만들었습니다.
만약을 위해, WEB 콘솔로부터 확인해 보겠습니다.
무사히 자격 증명 스토어에서 선택할 수 있습니다.
soracom beam 설정 (자격 증명 저장소 사용 버전)
이제 이것을 사용하여 beam을 설정합시다. beam-setup.json을 다음과 같이 수정합니다.
[
{
"key":"http://beam.soracom.io:8888/",
"value": {
"enabled": true,
"name": "HTTP",
"addEquipmentHeader": false,
"addDeviceIdHeader": true,
"addSignature": true,
"addSubscriberHeader": false,
"psk": {
"$credentialsId" : "test-psk",
},
"customHeaders": {},
"destination": "https://******************",
"skipStatusCode": false,
"useClientCert": false,
"useClientCredentials": false
}
}
]
PSK에서 plain text의 사전 공유 암호 문구가 아닌 자격 증명 저장소의 ID를 지정합니다. 지정을 위해서 「$credentialsId」라고 하는 특수한 키를 사용하고 있는 것을 알 수 있습니다.
그리고 cli에서이 설정을 보냅니다.
$ soracom groups put-config --group-id "*************" --namespace SoracomBeam --body @beam-setup.json
{
"configuration": {
"SoracomBeam": {
"http://beam.soracom.io:8888/": {
"addDeviceIdHeader": true,
"addEquipmentHeader": false,
"addSignature": true,
"addSubscriberHeader": false,
"customHeaders": {},
"destination": "https://***********************",
"enabled": true,
"name": "HTTP",
"psk": {
"$credentialsId": "test-psk"
},
"skipStatusCode": false,
"useClientCert": false,
"useClientCredentials": false
}
},
"createdAt": **************,
"createdTime": ****************,
"groupId": "*********************",
"lastModifiedAt": ***************,
"lastModifiedTime": ***************,
"operatorId": "***************",
"tags": {
"name": "*********************"
}
}
안전하게 설정할 수있었습니다. 패스 프레이즈도 보이지 않게되어있어 이것으로 안심이군요!
요약
beam의 설정을 할 때의 인증 정보의 취급이 문서에서 확실히 발견되지 않았기 때문에(찾는 방법이 나빴다 뿐이라면 미안해)저것 이것 해 보았을 때의 메모였습니다. 이제 cli에서도 안전하게 헤더 인증 설정을 할 수 있군요!
이전에 쓴 기사 보충
이전에 쓴 「mockmock으로 SORACOM Beam에서 협력하는 시스템 개발을 효율화합니다."」라고 하는 기사에서는 자격 증명을 plain text로 설정하고 있습니다만, 이번의 조작을 실시하는 것으로 안전하게 설정할 수 있습니다.
mockmock의 「프로젝트 설정」→「SORACOM 자격 증명 스토어」에서 자격 증명을 작성해, 그 ID를 지정해
$soracom credentials update --credentials-id ********** --body @psk-credentials.json
{
"createDateTime": *********,
"credentials": {},
"credentialsId": "test-psk",
"description": "test psk",
"type": "psk",
"updateDateTime": *******
}
그리고 update하고, 마찬가지로 beam 설정의 json 파일 내에서 지정하면 괜찮습니다. 자주 mockmock의 화면의 「인증 정보 스토어」의 의미를 알았습니다 (웃음)
나중에 해당 기사에도 추기합니다.
다음 재료에 맞춰
Funnel이나 Funk 당도 똑같이 미리 작성한 자격 증명으로 설정할 수 있을 것이므로 그 근처는 또 다음의 재료로 해 보려고 생각합니다.
{
"type": "psk",
"credentials": {
"key": "himitu"
},
"description": "test psk"
}
$soracom credentials create --credentials-id test-psk --body @psk-credentials.json
{
"createDateTime": ***********,
"credentials": {},
"credentialsId": "test-psk",
"description": "test psk",
"type": "psk",
"updateDateTime": *******
}
이제 이것을 사용하여 beam을 설정합시다. beam-setup.json을 다음과 같이 수정합니다.
[
{
"key":"http://beam.soracom.io:8888/",
"value": {
"enabled": true,
"name": "HTTP",
"addEquipmentHeader": false,
"addDeviceIdHeader": true,
"addSignature": true,
"addSubscriberHeader": false,
"psk": {
"$credentialsId" : "test-psk",
},
"customHeaders": {},
"destination": "https://******************",
"skipStatusCode": false,
"useClientCert": false,
"useClientCredentials": false
}
}
]
PSK에서 plain text의 사전 공유 암호 문구가 아닌 자격 증명 저장소의 ID를 지정합니다. 지정을 위해서 「$credentialsId」라고 하는 특수한 키를 사용하고 있는 것을 알 수 있습니다.
그리고 cli에서이 설정을 보냅니다.
$ soracom groups put-config --group-id "*************" --namespace SoracomBeam --body @beam-setup.json
{
"configuration": {
"SoracomBeam": {
"http://beam.soracom.io:8888/": {
"addDeviceIdHeader": true,
"addEquipmentHeader": false,
"addSignature": true,
"addSubscriberHeader": false,
"customHeaders": {},
"destination": "https://***********************",
"enabled": true,
"name": "HTTP",
"psk": {
"$credentialsId": "test-psk"
},
"skipStatusCode": false,
"useClientCert": false,
"useClientCredentials": false
}
},
"createdAt": **************,
"createdTime": ****************,
"groupId": "*********************",
"lastModifiedAt": ***************,
"lastModifiedTime": ***************,
"operatorId": "***************",
"tags": {
"name": "*********************"
}
}
안전하게 설정할 수있었습니다. 패스 프레이즈도 보이지 않게되어있어 이것으로 안심이군요!
요약
beam의 설정을 할 때의 인증 정보의 취급이 문서에서 확실히 발견되지 않았기 때문에(찾는 방법이 나빴다 뿐이라면 미안해)저것 이것 해 보았을 때의 메모였습니다. 이제 cli에서도 안전하게 헤더 인증 설정을 할 수 있군요!
이전에 쓴 기사 보충
이전에 쓴 「mockmock으로 SORACOM Beam에서 협력하는 시스템 개발을 효율화합니다."」라고 하는 기사에서는 자격 증명을 plain text로 설정하고 있습니다만, 이번의 조작을 실시하는 것으로 안전하게 설정할 수 있습니다.
mockmock의 「프로젝트 설정」→「SORACOM 자격 증명 스토어」에서 자격 증명을 작성해, 그 ID를 지정해
$soracom credentials update --credentials-id ********** --body @psk-credentials.json
{
"createDateTime": *********,
"credentials": {},
"credentialsId": "test-psk",
"description": "test psk",
"type": "psk",
"updateDateTime": *******
}
그리고 update하고, 마찬가지로 beam 설정의 json 파일 내에서 지정하면 괜찮습니다. 자주 mockmock의 화면의 「인증 정보 스토어」의 의미를 알았습니다 (웃음)
나중에 해당 기사에도 추기합니다.
다음 재료에 맞춰
Funnel이나 Funk 당도 똑같이 미리 작성한 자격 증명으로 설정할 수 있을 것이므로 그 근처는 또 다음의 재료로 해 보려고 생각합니다.
이전에 쓴 「mockmock으로 SORACOM Beam에서 협력하는 시스템 개발을 효율화합니다."」라고 하는 기사에서는 자격 증명을 plain text로 설정하고 있습니다만, 이번의 조작을 실시하는 것으로 안전하게 설정할 수 있습니다.
mockmock의 「프로젝트 설정」→「SORACOM 자격 증명 스토어」에서 자격 증명을 작성해, 그 ID를 지정해
$soracom credentials update --credentials-id ********** --body @psk-credentials.json
{
"createDateTime": *********,
"credentials": {},
"credentialsId": "test-psk",
"description": "test psk",
"type": "psk",
"updateDateTime": *******
}
그리고 update하고, 마찬가지로 beam 설정의 json 파일 내에서 지정하면 괜찮습니다. 자주 mockmock의 화면의 「인증 정보 스토어」의 의미를 알았습니다 (웃음)
나중에 해당 기사에도 추기합니다.
다음 재료에 맞춰
Funnel이나 Funk 당도 똑같이 미리 작성한 자격 증명으로 설정할 수 있을 것이므로 그 근처는 또 다음의 재료로 해 보려고 생각합니다.
Reference
이 문제에 관하여(soracom cli에서 자격 증명 조작 (beam)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kkimura/items/c7701ae2328914ae5a97텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)