Я сталкиваюсь с некоторыми вопросами при попытке разработать приложение S3 с помощью ASP.NET MVC и пытаясь остаться HIPAA совместимый.
Мой первоначальный план состоял в том, чтобы потребовать соединения SSL с моим веб-сервером, зашифровать изображения на моем сервере, затем отправить их к s3 с помощью моих закрытых ключей.
Вот мои очевидные проблемы:
Высказывание изображений будет зашифровано, потому что Вы будете соединяться с моим сервером через https, все еще не гарантирует, что все браузеры не будут данные кэша.
Не возможно даже рассмотреть "Строку запроса" с опцией истечения, так как данные будут зашифрованы прежде чем быть сохраненным на диске в s3 и будут снова дешифрованы в моем сервере в памяти.
Я думаю, что моя единственная опция состояла бы в том, чтобы писать/купить своего рода компонент ActiveX, который не выставит изображение как простой источник изображения HTML или запишет мое приложение как сторону клиента приложение WinForm.
На первый взгляд кажется маловероятным, что облачные вычисления могут быть совместимы с HIPAA. Конечно, невозможно удовлетворить Правило безопасности , когда экземпляр размещен на чужом оборудовании и обслуживается чьими-то системными администраторами?
Однако Amazon опубликовала технический документ по этой самой теме: Создание Совместимые с HIPAA приложения для обработки медицинских данных с AWS . Его стоит прочитать, и, похоже, он решает основные проблемы. Он заканчивается заявлением об отказе от ответственности:
«Этот технический документ не предназначен в качестве юридической консультации. Вам рекомендуется обратиться за советом к юрисконсульту относительно соблюдения требований HIPAA. и другие законы, которые могут применяться к вам и вашему бизнесу ».
Естественно, то же самое относится к любым советам, которые вы получаете от какого-то случайного парня с Das Interwebs.
Нет. Соответствие HIPAA невозможно из-за конфликта между требованием шифрования сети и требованием мониторинга сети.
Пара комментариев. Изображения, передаваемые через https, не всегда сохраняются в кэше браузера. Тем не менее, вы можете контролировать это с помощью заголовков.
Когда вы загружаете изображение, вы можете передавать его в память и непосредственно в базу данных, используя вашу любимую технику шифрования. Когда пользователь запрашивает страницу с url на зашифрованное изображение, вы просто вызываете свой контроллер, получаете зашифрованные данные из базы данных, расшифровываете их в памяти и возвращаете изображение.
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult ShowImage(string id)
{
ImageEntity image = Repository.For<ImageEntity>().Where(a => a.AssetIdd == id).First();
var decryptedImage = Decrypt(image);
ImageResult result = new ImageResult(decryptedImage.ImageData, decryptedImage.ContentType);
return result;
}
Вы используете это следующим образом:
<img src="/Assets/ShowImage/<%=Model.Id%>" alt="" />