3) セキュリティ文書の暗号化
一般文書をセキュリティ文書に暗号化
API
| Method | URL |
|---|---|
| POST | /api/encryption |
Request Body
| Name | Required | Type | Description | |
|---|---|---|---|---|
| licenseKey | required | string | SHIELDRM 管理者ページの連携アプリ管理メニューで発行されたライセンスを入力 | |
| encType | required | string | ドキュメントタイプ D : DAC ドキュメント M : MAC ドキュメント G : GRADE ドキュメント | |
| docList | required | string | encTypeに応じた適切な権限リストを入力してください。 D : SECURITYDOMAIN^111001100|USER01^011001100 M : 0000001 G : 0000001|RND1^110001111|dev04^010001111 ※ GおよびDの場合は、以下の「権限文字列」表を参照して入力してください。 | |
| srcFilePath | required | string | 原本一般文書のパス | |
| srcFileName | optional | string | セキュリティ文書ヘッダーに保存される元の文書名 - 未使用の場合、srcFilePath のファイル名が保存されます。 | |
| dstFilePath | required | string | 暗号化されたセキュリティ文書のパス | |
| algorithm | optional | string | AES / ARIA デフォルト値 : AES | |
| sciServerId | optional/required | string | 暗号化するSCIサーバーID <span style={{color: 'red'}}>- マルチ SCI サーバー使用時の必須条件 | |
| extraInfo | optional | json | JSON形式の追加情報入力 (以下のextraInfoデータ説明表およびサンプルデータを参照) | |
| decisionFactor | optional | json | 登録された条件付きポリシーを適用するための追加情報の入力 (以下の decisionFactor データ説明表およびサンプルデータを参照) | |
| serviceLinker | optional | json | SDFApp APIで使用するパラメータ - systemNameの変更時に必須 ex) "{\"systemName\":\"SDF\"}"![]() |
extraInfo データ説明表
Key Required Type Description source required json name required string 呼び出しシステム名 from required string 呼び出しシステムURL user json id string ユーザーID name string ユーザー名 depart string ユーザー全体部門 (上位グループ/中位グループ/下位グループ) duty string ユーザー職名 docUid string 暗号化ファイルの DOC_UID parentUid string 親文書のUID branchUid string 現在のUID
- サンプルデータ
{
"source": {
"name": "EKMS",
"from": "https://devekms.softcamp.co.kr"
},
"user": {
"id": "ekmsTest@softcamp.co.kr",
"name": "ekmsTest",
"depart": "임직원/연구소/개발실/개발1팀",
"duty": "과장"
},
"docUid": "77*9Sw5WOOq1hO*_vQ7vv70D77*9Oei_",
"parentUid": "88*9Sw5WOOq1hO*_vQ7vv70D77*9Oei_",
"branchUid": "99*9Sw5WOOq1hO*_vQ7vv70D77*9Oei_"
}
decisionFactor データ説明表
Key Required Type Description userId required string 条件付きポリシーの構成員に該当する文書変換をリクエストしたユーザーID ipAddress required string 条件付きポリシーの位置(IP)に該当する文書変換をリクエストしたユーザーIP
- サンプルデータ
{
"userId": "user1@socam.info",
"ipAddress": "10.10.10.100"
}
権限文字列 : ドキュメントタイ プが D または G の場合に含まれる 9 桁の文字列の説明
1列 2列 3列 4列 5列 6列 7列 8列 9列 キーの区分 読み取り権限 編集権限 復号化権限 外部転送権限 印刷権限 マークの有無 自動廃棄 権限変更 1 : グループ
0 : 個人1 : 権限あり
0 : 権限がありません1 : 権限あり
0 : 権限がありません1 : 権限あり
0 : 権限がありません1 : 権限あり
0 : 権限がありません1 : 権限あり
0 : 権限がありません1 : マーキングあり
0 : マーキングなし4 : 有効期限
2 : 出力回数
1 : 読み取り回数
0 : 影響なし1 : 変更可能
0 : 変更できません
- 例) 個人で読み取り権限、復号権限、外部転送権限があり、他の権限がない場合の権限文字列 => "010110000"
Response
| Name | Type | Description |
|---|---|---|
| code | int | 0 : 成功 0以外の値 : エラー |
| message | string | "OK" : 成功 その他の値 エラーメッセージ |
Examples
Request
- Body
[단일 서버]
{
"licenseKey": "FEFF-0C448-B1D8-A1A9A",
"encType": "D",
"docList": "SECURITYDOMAIN^110001111",
"srcFilePath" : "/opt/shieldrm/data/test.xlsx",
"dstFilePath" : "/opt/shieldrm/dataout_test.xlsx",
"extraInfo": "{\"source\":{\"name\":\"EKMS\",\"from\":\"https://devekms.softcamp.co.kr\"}}",
"decisionFactor": "{\"userId\":\"user1@socam.info\",\"ipAddress\":\"10.10.10.100\"}"
}
[멀티 서버]
{
"sciServerId": "SCAM-ED72-262C-433A-0004",
"licenseKey": "FEFF-0C448-B1D8-A1A9A",
"encType": "D",
"docList": "SECURITYDOMAIN^110001111",
"srcFilePath" : "/opt/shieldrm/data/test.xlsx",
"dstFilePath" : "/opt/shieldrm/dataout_test.xlsx",
"extraInfo": "{\"source\":{\"name\":\"EKMS\",\"from\":\"https://devekms.softcamp.co.kr\"}}",
"decisionFactor": "{\"userId\":\"user1@socam.info\",\"ipAddress\":\"10.10.10.100\"}"
}
[헤더의 원본 문서 이름 변경 시]
{
"sciServerId": "SCAM-ED72-262C-433A-0004",
"licenseKey": "FEFF-0C448-B1D8-A1A9A",
"encType": "D",
"docList": "SECURITYDOMAIN^110001111",
"srcFilePath" : "/opt/shieldrm/data/test.xlsx",
"srcFileName" : "original.xlsx",
"dstFilePath" : "/opt/shieldrm/dataout_test.xlsx",
"extraInfo": "{\"source\":{\"name\":\"EKMS\",\"from\":\"https://devekms.softcamp.co.kr\"}}",
"decisionFactor": "{\"userId\":\"user1@socam.info\",\"ipAddress\":\"10.10.10.100\"}"
}
[systemName 변경 시]
{
"sciServerId": "SCAM-ED72-262C-433A-0004",
"licenseKey": "FEFF-0C448-B1D8-A1A9A",
"encType": "D",
"docList": "SECURITYDOMAIN^110001111",
"srcFilePath" : "/opt/shieldrm/data/test.xlsx",
"dstFilePath" : "/opt/shieldrm/dataout_test.xlsx",
"extraInfo": "{\"source\":{\"name\":\"EKMS\",\"from\":\"https://devekms.softcamp.co.kr\"}}",
"decisionFactor": "{\"userId\":\"user1@socam.info\",\"ipAddress\":\"10.10.10.100\"}",
"serviceLinker": "{\"systemName\":\"SDF\"}"
}
Response
- 成功
{
"code": 0,
"message" : "OK"
}
- 失敗
- SDFコンテナエラー
- Status code : 400 Bad Request
{
"code": 40010,
"message": "File is already encrypted."
}
- SDFコンテナモジュール(SCSL)エラー
- Status code : 500 INTERNAL_SERVER_ERROR
{
"code": -61,
"message" : "EXCEPTION error"
}
- SKMS エラー (https://idocs.softcamp.co.kr/sdf/SDF_Guide/log/api_skmsErrorCode)
- Status code : 500 INTERNAL_SERVER_ERROR
[토큰 검증 실패]
{
"code": 50001,
"message": "{\"code\":40101,\"message\":\"Invalid token\",\"detail\":\"invalid_token\"}"
}
[KMS 연결 실패]
{
"code": 50001,
"message": "An unexpected error has occurred in the internal system",
"detail": "I/O error on GET request for \"https://devkms.softcamp.co.kr:8080/drm/7FDKQsEK-QVGKyXA2-fx1LxIzy-SNIre0s9/key/0000003\": Connect to devkms.softcamp.co.kr:8080 [devkms.softcamp.co.kr/10.14.10.171] failed: Connection timed out: connect; nested exception is org.apache.http.conn.HttpHostConnectException: Connect to devkms.softcamp.co.kr:8080 [devkms.softcamp.co.kr/10.14.10.171] failed: Connection timed out: connect"
}
[KMS 키조회 실패]
{
"code": 40013,
"message": "Key not found in the keyVault",
"detail": "keyId : 0000011"
}
- SKMSモジュール(SCKE)エラー
- Status code : 500 INTERNAL_SERVER_ERROR
{
"code": 40003,
"message": "Failed create header",
"detail": "4020"
}
API内部で呼び出すSKMS APIおよびSCSL関数の整理
| 呼び出し順序 | APIおよび関数名 |
|---|---|
| 1 | SKMS JWT 発行 API 呼び出し : /api/oauth/token |
| 2 | SCSL 暗号化関数の呼び出し : CloudAPIEncrypt() |
| 3 | ヘッダーキー照会 API 呼び出し : /api/docu/headerKey |
| 4 | SCSL ヘッダー情報取得関数呼び出し : dsGetFullHeaderEx() |
| 5 | 統合ログ送信API呼び出し : /log/container-linker |
