
# 代码存储原理介绍
CodeArts Repo使用华为云弹性文件服务SFS进行代码数据存储，在CodeArts Repo创建文件时，系统会默认选择开启加密功能。
加密文件系统使用的是密钥管理服务（KMS）提供的密钥，CodeArts Repo会利用弹性文件服务SFS的云原生能力自行构建和维护密钥管理基础设施，安全便捷。
CodeArts Repo在写入或读取弹性文件服务SFS中的代码仓库数据时，SFS存储会从KMS获取加解密密钥（AES-256加密算法），自动将数据进行加密或解密操作。
如下图所示，代码数据的加密写入流程为"写入代码仓\>获取加密密钥\>加密写入"""，代码数据的加密读取流程"代码仓读取请求\>解密密钥\>数据解密\>代码数据返回"。
其中，代码数据加密写入的各个环节工作方式如下：
- 代码仓写入**：**用户提交推送代码数据时，CodeArts Repo Server会将用户代码数据写入到SFS弹性文件云服务。
- 获取加密密钥：SFS从KMS读取存储的加密密钥，用于对代码数据进行加密。
- 加密写入：使用加密密钥，对代码数据进行加密并将加密后的数据存储到SFS上。
代码数据加密读取的各个环节工作方式如下：
- 代码仓读取请求：由用户发起下载代码仓的请求。

- 解密密钥：SFS从KMS读取存储的解密密钥，用于对代码数据进行解密。

- 数据解密：使用解密密钥，对代码数据进行解密。

- 代码数据返回：将解密后的代码数据返回给用户。
![](https://support.huaweicloud.com/productdesc-codeartsrepo/zh-cn_image_0000002410206914.png "点击放大")
