>-----Original Message-----
>From: Daniel P. Berrangé <berra...@redhat.com>
>Subject: Re: [PATCH rfcv4 08/13] Add Intel TDX Quote Generation Service(QGS)
>support
>
>On Wed, Mar 26, 2025 at 03:29:04AM +0000, Duan, Zhenzhong wrote:
>>
>>
>> >-----Original Message-----
>> >From: Daniel P. Berrangé <berra...@redhat.com>
>> >Subject: Re: [PATCH rfcv4 08/13] Add Intel TDX Quote Generation Service(QGS)
>> >support
>> >
>> >On Fri, May 24, 2024 at 02:21:23PM +0800, Zhenzhong Duan wrote:
>> >> Add element "quoteGenerationService" to tdx launch security type.
>> >> Currently it contains only one sub-element "SocketAddress".
>> >>
>> >> "SocketAddress" is modelized according to QEMU QAPI, supporting
>> >> inet, unix, vsock and fd type and variant attributes depending
>> >> on type.
>
>> >
>> >The 'fd' socket type does not make sense to expose
>> >in libvirt XML. FD passing is something handled
>> >privately between libvirt & QEMU, not a end user
>> >choice.
>>
>> Yes, I can remove ' FdSocketAddress fd'.
>>
>> >
>> >Going further I don't think InetSocketAddress
>> >makes sense to expose, as QGS has no ability
>> >to listen on IP sockets. It can only do UNIX
>> >sockets or VSock AFAICT.
>>
>> Why can't qemu connect to QGS on a remote hoste?
>
>QGS has no IP support, and the work that QGS
>performs to create a signed attestation report
>has to be done on the same host that the VM
>runs on.
>
>> Even if connect to QGS on localhost, 127.0.0.1 can be used.
>
>Again QGS has no IP support, and 127.0.0.1 offers
>no benefits over UNIX sockets, while having worse
>security.

Clear.

>
>> > Even vsock looks like
>> >a remnant of the old way of doing attestation
>> >before it was integrated into Linux via sysfs
>> >with the kernel making a call into QEMU.
>>
>> Not get, qemu does support vsock, see https://lore.kernel.org/qemu-
>devel/20240229063726.610065-50-xiaoyao...@intel.com/
>
>That's simply an artifact of the QEMU patches using QEMU's
>generic socket APIs. The QGS vsock support dates from the
>earlier days of TDX development, where the guest VM would
>be directly connecting to QGS.  With QEMU & the kernel
>mediating access to QGS, enabling VSOCK is not required.
>VSOCK decreases security of the host - it allows any
>running guest (whether confidential or not) to directly
>attack QGS via any of its protocol messages.  With QEMU
>mediating QGS access, the malicious guest would need to
>compromise the kernel, and QEMU before it can access
>QGS.

Understood.

>
>I'm not seeing a compelling functional reason to enable
>QEMU to connect to QGS over VSOCK in libvirt, when UNIX
>sockets offer the required functionality with greater

OK.

>security.
>
>> >IOW, AFAICT, for QGS all we actually need is
>> >the ability to set a UNIX socket path in libvirt.
>> >eg
>> >
>> >     <quoteGenerationService path="/var/run/tdx-qgs/qgs.socket"/>
>>
>> Hmm, then we go back to opaque string, do you change your mind?
>> See
>https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/message/XCE4F4FCRFI
>P7IVZCFPB6RDWLEWXXT2G/
>
>The original patch was an opaque string, because it was encoding
>various different socket address types in one string.
>
>What I'm proposing is different. Do NOT support different socket
>address types initially, only support UNIX sockets, and the only
>attribute is thus the bare UNIX socket path.
>
>If we start with only supporting:
>
>    <quoteGenerationService path="/var/run/tdx-qgs/qgs.socket"/>
>
>then in the unlikely even we need more socket types we can extend
>this, by adding a "type" attribute defaulting to "unix" if omitted,
>so we can then allow a choice
>
>    <quoteGenerationService type="unix" path="/var/run/tdx-qgs/qgs.socket"/>
>
>or
>
>    <quoteGenerationService type="vsock" cid="...." port="..."/>
>
>but hopefully we'll never need this, as UNIX sockets should suffice.

Sounds good, will do this way.

>
>> >and probably libvirt should allow 'path' to be optional
>> >so an app can just do
>> >
>> >     <quoteGenerationService/>
>> >
>> >and libvirt would fill in the default path which QGS listens
>> >on out of the box....
>>
>> Yes if we have such default QGS path, do we?
>
>Yes, it is hardcoded in QGS source code:
>
>$ git grep '#define QGS_UNIX_SOCKET_FILE'
>server_main.cpp:#define QGS_UNIX_SOCKET_FILE "/var/run/tdx-qgs/qgs.socket"

OK, will do.

Thanks
Zhenzhong

Reply via email to